簡體   English   中英

如何在模塊中定義角度解析控制器?

[英]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名為控制器。

那么,當您同時注冊foobar模塊時會發生什么呢? 我認為最后一個獲勝。 因此,如果您將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並不真正知道控制器的來源。 您的應用程序包括foobar ,然后注冊controller1

如果同時包含foobar controller1則來自上一個包含的模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM