2014-05-16 49 views
16

有兩種方法(AFAIK)將控制器與視圖模板/部分相關聯:$routeProviderngController指令中指定的路由。特別是(但不是唯一的)簡單路由,是否有任何優勢/效率?

我的項目目前使用$ routeProvider方法,但是我已經給出了嵌套視圖的任務。這似乎很簡單,只要ngInclude指定它的ngController即可。

回答

5

如果您認爲包括所有腳本作爲獨立包裝由單人或團隊開發的視圖,則需要ngController

$routeProvider另一方面爲您提供高級功能,如通過路線的resolve屬性注入值。這樣,你可以將你的AJAX加載的數據直接注入你的控制器,例如,而不是控制器讓它自己。或有路線改變,以等待數據等

順便說一句:如果你需要的路由和嵌套的意見,你可以在angular ui-router

+0

感謝看看很多關於這個答案!我目前使用$ stateProvider而不是$ routeProvider,這裏是否也適用? – 0x1ad2

13

這個問題真的歸結爲設計,因此這是一個有點意見的基礎。考慮到這一點,我知道最好的指導是:

  • $routeProvider - 允許您指定模板的單個控制器。由於這是路由的一部分,因此可以輕鬆找到隨頁面一起提供的控制器。我使用它來存儲和加載整體頁面邏輯,而不是元素特定的邏輯。

    這也很重要,因爲這意味着您可以爲兩條不同的路線加載完全相同的模板,但行爲和數據可能會因爲控制器可以更改而不同。這不是ngController選項很容易做到的事情。

  • ngController - 將控制器的作用範圍限定在頁面/模板上的特定元素上。當您需要在單個頁面上使用多個控制器時,這可以使代碼更易於閱讀,並且允許更具體地確定控制器的作用域。

所以這真的可以歸結爲範圍意圖。希望這些規則在決定使用哪些規則時有所幫助。

相關問題