AngularJS DI注释 - 为什么要使用它们?

时间:2014-07-02 08:57:25

标签: angularjs dependency-injection

我正在学习AngularJS,目前正在尝试使用主依赖注入。

当我定义一个控制器时,文档告诉我通过注释指定依赖关系,并将它们列在构造函数的参数列表中是等效的。因此,如果我写的话,我应该得到相同的结果:

angular
    .module('myapp.controllers', [])
        .controller('MainNavigationController', ['$scope', '$location', function ($scope, $location) { 
            // ... some code
        }]);

或:

angular
    .module('myapp.controllers', [])
        .controller('MainNavigationController', function ($scope, $location) { 
            // ... some code
        });

是否有任何实际的理由我应该更喜欢前者,因为它似乎是不必要的冗长?

2 个答案:

答案 0 :(得分:1)

如果要在缩小代码时保留依赖项,则需要使用此语法(var名称将被替换,因此依赖项将受到影响):

angular
    .module('myapp.controllers', [])
        .controller('MainNavigationController', function (a, b) { 
            // ... some code
        });

a,b依赖关系不存在......所以代码会崩溃

angular
    .module('myapp.controllers', [])
        .controller('MainNavigationController', ['$scope', '$location', function (a, b) { 
            // ... some code
        }]);

a,b被绑定到真正的依赖字符串..缩小后确定

请参阅:https://docs.angularjs.org/guide/di

答案 1 :(得分:0)

前者用于JavaScript缩小,它会更改参数名称,从而打破基于名称的DI。字符串值“存活”缩小,让Angular“知道”应该将哪个参数绑定到哪个依赖项。

您可以使用后者并使用https://github.com/btford/ngmin在构建时生成字符串数组。