2014-10-27 46 views
0

是什麼定義這樣定義AngularJS控制器參數

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

或該控制器之間的區別?

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

第二個將無法正常運行如下。 – elclanrs 2014-10-27 20:10:12

回答

2

他們都工作,爲他相同,但數組符號將生存縮小。

+0

哪個(以防萬一)是第一個選項。 – mtpultz 2014-10-27 21:36:55

0

不同的是,當代碼被放大傳遞不應該被改爲其他名稱的參數和進一步的代碼變成正確的,因爲我們可能注入的功能和其他有用的東西的構造,所以爲了避免我們採取論證作爲數組項,即在字符串中,以便它們在放大時匹配參數。

我有一個很好的報價從一個人

當你縮小JavaScript JavaScript的minifier替代名稱的局部變量,並用較短的名稱參數的 。然而, AngularJS使用的控制器功能,工廠, 服務和提供的參數名稱決定如何注入到他們的工廠 功能。如果名稱被改變,AngularJS不能注入 正確的對象。

爲了使您的AngularJS代碼微小的安全,您需要提供對象的名稱 注入的字符串。您在 連同需要注入值的函數包裝這些字符串數組。 這裏是一個AngularJS微小安全依賴注入

自己的例子:

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