AngularJS注释问题

时间:2015-08-06 16:18:47

标签: angularjs dependency-injection

您好我是Angular和JS Frameworks的新手。我想知道是否有人可以帮我解读一些符号。

来自文档: https://docs.angularjs.org/guide/di

内联数组注释

someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
  // ...
}]);

$ inject属性注释

var MyController = function($scope, greeter) {
  // ...
}

MyController.$inject = ['$scope', 'greeter'];

someModule.controller('MyController', MyController);

对于我的教育,$ inject方法是首选,因为它更加爆炸。我看到三个步骤:1)定义函数,2)注入依赖项,3)附加到父模块。

好的,我的问题: 为什么" $ scope"和#34; greeter"列为函数的参数,然后注入$ inject?它不是一个或另一个吗?

someModule.controller(' MyController',MyController);

为什么MyController作为文字列出两次?这是一种类型和象征性的东西吗?可能就这么容易:

someModule.controller(' MyInstanceOfMyController',MyController);

感谢任何照明

1 个答案:

答案 0 :(得分:0)

  

对于我的教育,$ inject方法是首选,因为它更加爆炸。我看到三个步骤:1)定义函数,2)注入   依赖关系,3)附加到父模块。

我也更喜欢这种符号,它读得更好。

  

好的,我的问题:为什么" $ scope"和#34; greeter"列为   函数的参数然后注入$ inject?   它不是一个或另一个吗?

这是有道理的,你告诉注射器要注射什么,并且函数声明将这些作为可用参数。

您可以将" greeter2更改为" newGreeter"在进样器中,您无需更新功能代码即可使用新模块。

  

someModule.controller(' MyController',MyController);

     

为什么MyController作为文字列出两次?这是一种类型吗?   象征的东西?可能就这么容易:

     

someModule.controller(' MyInstanceOfMyController',MyController);

有点,在这里你告诉模块 1)调用控制器的内容 2)哪个函数定义了控制器

这些可以具有相同的名称,但他们不必这样做。