有兩種方法(AFAIK)將控制器與視圖模板/部分相關聯:$routeProvider
和ngController
指令中指定的路由。特別是(但不是唯一的)簡單路由,是否有任何優勢/效率?
我的項目目前使用$ routeProvider方法,但是我已經給出了嵌套視圖的任務。這似乎很簡單,只要ngInclude指定它的ngController即可。
有兩種方法(AFAIK)將控制器與視圖模板/部分相關聯:$routeProvider
和ngController
指令中指定的路由。特別是(但不是唯一的)簡單路由,是否有任何優勢/效率?
我的項目目前使用$ routeProvider方法,但是我已經給出了嵌套視圖的任務。這似乎很簡單,只要ngInclude指定它的ngController即可。
如果您認爲包括所有腳本作爲獨立包裝由單人或團隊開發的視圖,則需要ngController
。
$routeProvider
另一方面爲您提供高級功能,如通過路線的resolve
屬性注入值。這樣,你可以將你的AJAX加載的數據直接注入你的控制器,例如,而不是控制器讓它自己。或有路線改變,以等待數據等
順便說一句:如果你需要的路由和嵌套的意見,你可以在angular ui-router
這個問題真的歸結爲設計,因此這是一個有點意見的基礎。考慮到這一點,我知道最好的指導是:
$routeProvider
- 允許您指定模板的單個控制器。由於這是路由的一部分,因此可以輕鬆找到隨頁面一起提供的控制器。我使用它來存儲和加載整體頁面邏輯,而不是元素特定的邏輯。
這也很重要,因爲這意味着您可以爲兩條不同的路線加載完全相同的模板,但行爲和數據可能會因爲控制器可以更改而不同。這不是ngController
選項很容易做到的事情。
ngController
- 將控制器的作用範圍限定在頁面/模板上的特定元素上。當您需要在單個頁面上使用多個控制器時,這可以使代碼更易於閱讀,並且允許更具體地確定控制器的作用域。
所以這真的可以歸結爲範圍和意圖。希望這些規則在決定使用哪些規則時有所幫助。
感謝看看很多關於這個答案!我目前使用$ stateProvider而不是$ routeProvider,這裏是否也適用? – 0x1ad2