[英]How does angular resolve controllers defined in modules?
angular.module('foo').controller('controller1', ['$scope', function($scope) {
});
和:
<div ng-app='app' ng-controller='controller1'>
</div>
angular如何知道'controller1'駐留在模塊'foo'中 ?
此外,如果有人另外這樣做:
angular.module('bar').controller('controller1', ['$scope', function($scope) {
});
角現在選擇哪一個?
在此處聲明ng-app
:
<div ng-app='app' ng-controller='controller1'>
</div>
Angular將尋找名稱為app
的模塊定義。 像這樣:
angular.module('app', []); // notice the []
在第二個參數[]
數組中,Angular需要依賴模塊。 因此,為了包括foo
模塊中的controller1
,您可以這樣做:
angular.module('app', ['foo']);
從bar
模塊:
angular.module('app', ['bar']);
在每一個這些,只有一個單一的controller1
名為控制器。
那么,當您同時注冊foo
和bar
模塊時會發生什么呢? 我認為最后一個獲勝。 因此,如果您將app
定義為:
angular.module('app', ['foo', 'bar']);
然后, bar
模塊的controller1
將覆蓋注入器內部的名稱controller1
。
因此,沒有內置的機制允許在模塊之間應用相同的名稱。 因此,您可以采用命名方案來確保控制器是唯一的:
angular.module('bar').controller('bar.controller1', ['$scope', function($scope) {
});
angular如何知道'controller1'駐留在模塊'foo'中?
在Angular解析controller1
,它不知道它在哪個模塊中。一旦該模塊是一個依賴項(依賴於ng-app
定義的模塊),則僅解析所有控制器(在所有模塊中)他們的名字。
Angular並不真正知道控制器的來源。 您的應用程序包括foo
或bar
,然后注冊controller1
。
如果同時包含foo
和bar
controller1
則來自上一個包含的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.