控制器结构的差异

时间:2014-09-03 16:13:04

标签: javascript angularjs

在AngularJS中,我看到控制器以两种不同的方式编码。

这样:

myApp.controller('SearchCtrl', ['$scope', '$location',
    function($scope, $location) {
        // code here
    }]);

就这样:

myApp.controller('SearchCtrl', function($scope, $location) {
    // code here
});

两者有什么区别?

2 个答案:

答案 0 :(得分:4)

这只是允许它,以便在缩小完成时,Angular将能够保持对实际依赖性的引用。所以,如果

myApp.controller('SearchCtrl', function ($scope, $location, MyService) {
    // code here
});

缩小了,它会变成:

myApp.controller('SearchCtrl',function(a,b,c){//code here});

由于没有像a,b和c这样的提供者,Angular会废话。当你添加方括号及其缩小时,它就变成了:

myApp.controller('SearchCtrl',['$scope', '$location', 'MyService',function(a,b,c){//code here}]);

Angular知道映射$ scope - > a,$ location - > b,和MyService - >角

希望有所帮助!

答案 1 :(得分:0)

数组语法用于允许缩小代码。如果未使用此代码并且代码被缩小,则缩放器可能会重命名$scope$location,因此依赖注入将失败。