定义AngularJS控制器参数

时间:2014-10-27 20:08:29

标签: javascript angularjs angularjs-controller

定义像这样的控制器

之间有什么区别
app.controller('MyCtrl', ['$scope', '$http',    
function ($scope, $http) {
    //...
}
]);

还是这个?

app.controller('MyCtrl', function ($scope, $http) {
    //...
});

3 个答案:

答案 0 :(得分:2)

他们都为他工作,但数组符号将在缩小时存活。

答案 1 :(得分:0)

拳头选项对于缩小比赛是安全的。

有关详细信息,请参阅此处https://docs.angularjs.org/tutorial/step_05#a-note-on-minification

答案 2 :(得分:0)

不同之处在于,当代码被放大时,传递的参数不应该更改为其他名称,并且进一步的代码变得正确,因为我们可能有构造函数注入函数和其他有用的东西,所以为了避免我们将参数作为数组项,即在字符串中,因此它们在放大时与参数匹配。

我有一个好人引用

  

当您缩小JavaScript时,JavaScript缩小器会替换名称   局部变量和名称较短的参数。然而,   AngularJS使用控制器函数,工厂的参数名称,   服务和提供商决定将什么注入他们的工厂   功能。如果更改名称,AngularJS无法注入   正确的对象。

     

要使AngularJS代码缩小安全,您需要提供   要作为字符串注入的对象的名称。你将这些字符串包装成   一个数组以及需要注入值的函数。   这是一个AngularJS缩小安全依赖注入

你自己的例子:

  app.controller('MyCtrl', ['$scope', '$http',    
  function ($scope, $http) {
   //...
   }
  ]);