【发布时间】:2014-02-26 06:56:41
【问题描述】:
我已经开始使用 angularJS 编写应用程序。几周后,我突然意识到我应该从一开始就使用 require JS 来加载我的模块。是的,我知道,这很愚蠢。但是它就是这样啊。 所以我现在尝试将我的代码转换为适合 requireJS。
这是我的 main.js
requirejs.config({
baseUrl: "js",
paths: {
jquery:'jquery-1.7.min',
angular: 'angular',
angularRoute:'angular-route',
mainApp:'AngularApp/app'
},
priority:['angular'],
shim:{
angularRoute:{
deps:["angular"]
},
mainApp:{
deps:['angularRoute']
}
}});
require(['angular','angularRoute', 'mainApp'],
function(angular, angularRoute, app)
{
angular.bootstrap(document, ['ServiceContractModule']);
});
这是我的 app.js
define(['angular',
'angularRoute',
'AngularApp/services',
'AngularApp/directives',
'AngularApp/controllers'],
function(angular, angularRoute, services, directives, controllers)
{
console.log("sup");
var serviceContractModule = angular.module('ServiceContractModule',[ 'ngRoute', services, directives, controllers ]);
serviceContractModule.config(function($routeProvider,$locationProvider) {
$routeProvider.when('/contractNumber/:contractNumbers', {
controller : 'ContractController',
templateUrl : './contractSearchResult',
reloadOnSearch : true
}).when('/serialNumber/:serialNumbers', {
controller : 'SerialController',
templateUrl : './serialSearchResult'
}).when('/QuoteManager',{
controller : 'QuoteManagerController',
templateUrl: './quoteManagerView'
}).when('/QuoteManagerHome',{
controller : 'QuoteManagerController',
templateUrl: './quoteManagerHome'
});
});
return serviceContractModule;
});
这是我的directions.js 文件
define(['angular',
'AngularApp/Directives/tableOperations',
'AngularApp/Directives/line',
'AngularApp/Directives/listOfValues'],
function(
angular,
tableOperations,
line,
listOfValues)
{
var directiveModule = angular.module('ServiceContractModule.directives');
directiveModule.directive('tableoperations', tableOperations);
directiveModule.directive('line', line);
directiveModule.directive('listOfValues', listOfValues);
return directiveModule;
}
)
这是我的 services.js 文件
define(['angular',
'AngularApp/Services/quoteManagerSearch'],
function(angular, quoteManagerSearch)
{
var serviceModule = angular.module('ServiceContractModule.services');
serviceModule.factory('searchRequestHandler', quoteManagerSearch);
return serviceModule;
}
)
当我运行我的页面时,我得到的当前错误是
Uncaught TypeError: Cannot read property 'module' of undefined directives.js:14
Uncaught TypeError: Cannot read property 'module' of undefined services.js:5
这似乎发生在这一行
var directiveModule = angular.module('ServiceContractModule.directives');
我认为由于某种原因,角度文件没有被加载。虽然当我运行页面时,我可以看到所有 js 文件在 chrome 中都以正确的顺序加载。
有什么想法吗?需要快速帮助!谢谢!
【问题讨论】:
-
将角度更改为 $angular
-
嗯,但我已将 angular 模块的别名定义为“angular”本身。为什么我需要这样做?
-
你调用了角度参考脚本吗?
-
是的。在 main.js 中,我在路径中指定了 angular:'angular'。角度文件的路径是 js/angular.js。我已将 baseurl 指定为 js。此外,当我加载页面时,我实际上可以看到在 main.js 之后加载了 angular.js 文件。
标签: javascript angularjs requirejs angular-routing