我是一个 angularJS 菜鸟,根据我的理解,我可以在两个地方注入(inject)依赖。
angular.module('myApp', [A: HERE IS ONE PLACE TO DO IT])
.controller('HomeController', function(B: $hereIsAnotherPlace){
});
我说得对吗?如果是,有什么区别?
最佳答案
在您的示例中,A 是您可以指定模块而不是依赖注入(inject) (DI) 的地方。下面,解决您的代码的这种变化:
.controller('HomeController', [A , function(B) {}]);
第二个 (B) 是必需的,第一个 (A) 是可选的(但具有如下所述的好处)。
这是一个仅使用 Angular 文档中的第二个 (B) 的示例:
function MyController($scope, greeter) {...}'
但是 Javascript 压缩器和混淆器可以重命名参数并打破这种方法,因为 Angular 期望,例如,$scope 被精确命名为 $scope(并且压缩器喜欢将参数重命名为尽可能小的东西,以便将文件缩小为尽可能小)。
其中一种方法是内联注释:
someModule.factory('greeter', ['$window', function(renamed$window) {...}]);
(再次来自 Angular 文档)。这解决了这个问题,因为 minifers/.. 不会更改字符串文字。 Angular 知道将具有该字符串名称的服务注入(inject)到函数内的匹配参数中。因此参数名称可以通过缩小器更改为任何内容,一切都很好,唯一重要的是服务在字符串/参数列表中的位置(第一个字符串与第一个参数匹配,等等)。
有关依赖注入(inject)的更多信息:http://docs.angularjs.org/guide/di
关于javascript - AngularJS Dependency Injection 在哪里指定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351097/