我在聽$ routeChangeSuccess一個控制器內:
// In MyController
$scope.$on("$routeChangeSuccess", (a, b, c) => {
console.log(a, b, c);
});
此工作正常時,路線變化的應用程序內導航的結果,但並不總是直接在瀏覽器如去一個URL時/我的新的URL
性能取決於控制器的定義,其中:
<div ng-controller="MyController"></div>
如果這是主要的index.html,似乎每一次工作,但是:
<mydirective ng-controller="MyController"></mydirective>
有:
app.directive('myDirective', function() {
return {
templateUrl: '<SOME_CONTENT>'
}
});
或確實:
<mydirective></mydirective>
和:
app.directive('myDirective', function() {
return {
controller: "MyController",
templateUrl: '<SOME_CONTENT>'
}
});
後兩項只聽到$ routeChangeSuccess的時間大約50% - 這可能是由於一些編譯/消化的競爭條件。
我更喜歡在指令定義中設置我的控制器 - 它很整潔,看起來很好地模塊化,沒有多餘的標記。不幸的是,它不經常工作。
附註:爲什麼我要這樣做?
我正在努力應對Angular似乎拒絕使用的應用程序設計模式 - 我的應用程序中有許多獨立的模塊,它們都同時存在,我希望它們響應以適當的方式更改URL。
我真的不明白爲什麼這麼難實現。 $ routeProvider沒有什麼用處,因爲我的路由只能有一個視圖/控制器 - 如果我想構建一個單頁面網站,這很好,但如果我想用一個複雜的UI構建一個單頁面應用程序。 ui路由器插件並不是我正在尋找的任何一種 - 它更多的是關於具有可選路線的州。
這是網絡 - 網址是神聖的!我想盡可能多地使用它,並且我希望應用程序中的每個組件或模塊都能根據URL知道它應該做什麼。我不確定爲什麼Angular這麼辛苦。
感謝您 - 我開始瞭解我的問題的原因。我在想我的應用程序結構是否錯誤?你能提出一個更好的方式來做我想做的事嗎? – user888734
無論在'ng-view'內部加載什麼都可以被認爲具有它所依賴的路由的生命週期。如果您有多個活動的模塊,則它們不能與視圖相關。這些可以是所有服務。也許你的具體例子可以提供幫助。 – Chandermani