【发布时间】:2014-08-03 22:17:27
【问题描述】:
我正在构建一个地址簿来学习 Angular 并让它运行良好,直到我尝试使用路由管理器。问题在于通过 require 加载角度路由管理器。我收到以下错误“未捕获的对象”。
对此存在疑问,但已被用户删除,其他答案表明未将 ngRoute 依赖项包含在 ng.module 依赖项列表中,或者根本没有使用 require。我没有太多运气找到答案!
我有一个包含需要配置文件的 HTML 文件:
requirejs.config({
paths: {
'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min'],
'angular': ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min','angular_1.2.16.min'],
'angular-route': ['//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-route.min','angular-route_1.2.16.min'],
},
shim: {
'jquery': {
exports: 'jquery'
},
'angular': {
exports: 'angular'
},
'angular-route': {
exports: 'ngRoute',
deps: ['angular']
}
},
baseUrl: 'js/lib'
})
require(['modules/ContactsMod'], function() { });
这是在配置文件末尾调用的 ContactsMod.js 文件:
define(['jquery', 'angular-route','angular','controllers/ContactsCtrl','routes/ContactsRout'],function($,ngRoute,ng,controller,router) {
// var contactsApp = ng.module('contactsApp', [ngRoute]);
// contactsApp.config(function ( $routeProvider, $locationProvider ){
// $log.debug( "Configuring $routeProvider...");
//
// $locationProvider.html5Mode(true); //?????
//
// $routeProvider
// .when( '/', {
// templateUrl : "views/Contacts.html",
// controller : "controller"
// })
// .otherwise({ redirectTo: '/' })
// })
var contactsApp = ng.module('contactsApp', []);
contactsApp.controller(controller);
ng.bootstrap(document, ['contactsApp']);
});
注释掉的部分是我想要弄清楚的部分。上面的版本可以工作,但是当我尝试将 ngRoute 依赖添加到注释掉部分中的 ng.module 调用时,我得到了提到的错误。
我可以看到在调用模块之前已经加载了所有资产。但我也可以看到 ngRoute 以未定义的形式注销,因此它不起作用是有道理的!我尝试了许多不同的配置变体。就像包含 angular-route 作为 angular 的依赖项(它给出了相同的错误加上另一个“未捕获的类型错误:无法读取未定义的属性“模块”)。
我可以看到有一个种子应用程序使用自定义异步加载程序而不是要求...您有什么建议?
我不知道如何调试这个问题,感谢任何帮助或指针!
【问题讨论】:
-
我对 RequireJS 不太了解,但我很确定 angular.module 需要一个字符串数组作为它的依赖项,例如
ng.module('contactsApp', ['ngRoute']); -
谢谢 - 我已经更正了这个......但同样的错误,因为我认为该模块在范围内不可用。
-
嗯,这很奇怪。它应该以与加载 Angular 相同的方式加载 ngRoute 模块,至少人们会这么认为。
-
也许看看github.com/tnajdek/angular-requirejs-seed 看看他们在做什么不同?
-
使用AngularJS和RequireJS并不是那么简单。在stackoverflow.com/questions/23929498/…查看我的回答
标签: javascript angularjs routes requirejs