当使用angular 1.2而不是1.07时,下面这段代码就不再有效了,为什么?
'use strict';
var app = angular.module('myapp', []);
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider.
when('/', {
templateUrl: 'part.html',
controller: 'MyCtrl'
}).
otherwise({
redirectTo: '/'
});
}
]);
问题出在注入器配置部分(app.config):
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=muninn&p1=Error%…eapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.0rc1%2Fangular.min.js%3A31%3A252)
如果我没记错的话,这个问题是从angular 1.1.6开始的。
这是注入器错误。你可能使用了很多JavaScript文件,所以注入器可能会丢失。
这里有一些:
var app = angular.module('app',
['ngSanitize', 'ui.router', 'pascalprecht.translate', 'ngResource',
'ngMaterial', 'angularMoment','md.data.table', 'angularFileUpload',
'ngMessages', 'ui.utils.masks', 'angular-sortable-view',
'mdPickers','ngDraggable','as.sortable', 'ngAnimate', 'ngTouch']
);
请检查你需要在app.js中插入的注入器
对于那些使用压缩、捆绑和缩小文件的框架的人,请确保显式地定义每个依赖项,因为这些框架倾向于重命名变量。我在使用ASP时遇到了这种情况。NET BundleConfig.cs将我的应用程序脚本捆绑在一起。
之前
app.config(function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'list.html',
controller: 'ListController'
}).
when('/items/:itemId', {
templateUrl: 'details.html',
controller: 'DetailsController'
}).
otherwise({
redirectTo: '/'
});
});
后
app.config(["$routeProvider", function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'list.html',
controller: 'ListController'
}).
when('/items/:itemId', {
templateUrl: 'details.html',
controller: 'DetailsController'
}).
otherwise({
redirectTo: '/'
});
}]);
点击这里阅读更多关于Angular依赖注释的内容。
还有一件事要添加到列表中,因为这是谷歌搜索'Error: [$injector:modulerr] angular'得到的第一个结果:
如果你在你的'index'html'和你的主javascript应用程序定义中有一个不匹配的应用程序名称,这也会产生这个错误。
例如,如果你的HTML是这样的:
</head>
<body ng-app="myWebSite">
<!-- My Web Site -->
<p>About my web site...</p>
etc ...
和你的JavaScript看起来像这样(即有一个错别字的应用程序名称- myWebCite而不是myWebSite):
/** Main AngularJS Web Application */
var app = angular.module('myWebCite', [ 'ngRoute' ]);
/** Configure the Routes */
app.config(['$routeProvider', function ($routeProvider) {
etc ...
那么也会生成'Error:[$injector:modulerr] angular'错误。