我在缩小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);
           }
     ]}

10-06 12:12