我在缩小Angular代码时遇到了一些问题,所以我打开了ng-strict-di
问题似乎在于我在app.js配置中解决路由 promise 的方式
.when('/:userId', {
templateUrl: 'views/main.html',
controller: 'MyCtrl',
resolve : {
myDependency : function(Cache, Model, $route){
return Cache.getCached( $route.current.params.userId);
}
}
})
然后我将已解决的 promise 注入(inject)MyCtrl Controller 中
angular.module('myApp')
.controller('MyCtrl',[ 'myDependency', '$scope', '$rootScope', '$timeout', function (myDependency, $scope, $rootScope, $timeout) {
etc...
但是我从Angular收到一个错误
[Error] Error: [$injector:strictdi] myDependency is not using explicit annotation and cannot be invoked in strict mode
该问题似乎可追溯到app.js中的resolve定义,因为我可以在resolve中更改“myDependency”的名称,并且错误消息使用那里的名称,而不是myCtrl中的依赖项名称。我在myCtrl Controller 中明确列出了依赖项的名称。该应用程序可以运行,但是由于此错误的原因,我无法缩小此代码。
最佳答案
遵循strict-di也可以解决。希望这行得通!
resolve : {
myDependency : ['Cache', 'Model', '$route', function(Cache, Model, $route){
return Cache.getCached( $route.current.params.userId);
}
]}