2016-06-13 102 views
0

基本上我不知道什么是宣称这种做法之间我控制器之间的区别:问:为什么在角度控制器中使用依赖注入?

myApp.controller('GreetingController', ['$scope', function($scope) { 
    $scope.greeting = 'Hola!'; 
}]); 

这:

myApp.controller('GreetingController', function($scope) { 
    $scope.greeting = 'Hola!'; 
}]); 

据我所知,在角控制器/指令/过滤等声明括号是依赖注入的,但是使用Controller的$ scope只能用于控制器。至少这是我的理解。

请帮我理解一下,我一直在研究这个问题,而且很多关于此事的解释都可以在网上找到。

在此先感谢。

+0

我想你缺少的是这两个例子都使用依赖注入!第二个示例明确定义了正在注入的服务的名称('$ scope')。 – Ignitor

回答

2

在第二个版本中,依赖注入将仅依赖于$scope变量名称。由于它将在缩小过程中重命名,因此这将不再适用。

对这个问题的更多细节:Angularjs minify best practice

1

之前在服务器上部署的代码,我们用它来构建它,并在此过程中的代码得到缩小和丑化,而加工生成角的代码以这样的方式得到压缩它简而言之取代了长变量名称。 例如。

myApp.controller('GreetingController', ['$scope','myService', function($scope,m) { 
    $scope.greeting = 'Hola!'; 
}]); 

当代码获得精缩,它可能会改变

myApp.controller('GreetingController', ['$s', 'm', function($scope,m) { 
    $scope.greeting = 'Hola!'; 
}]); 

它表示$ S作为depedency是什么功能可按的第一个参数。 amd m是第二个函数参数。

一定要记住按照与传递参数相同的顺序进行注入。

希望这个答案可能会给你一些想法。

+1

你的回答几乎是正确的,但你有错误的方式 - 参数名称被缩小,但数组中的字符串不会!它看起来更像'['$ scope','myService',函数($ s,m){...}]'。 –

+1

@JoeClay:是的,我错过了那个错字。 – amoeba