我使用$state.go();來切換頁
其中有些頁面的資料是動態的,我希望每次進來都重新載入資料。
請問如何每次當切換到這個頁面時都重新載入頁面(重新執行controller中的方法)?
PS:
$state.go('page',null,{
reload:true
});
這個也沒有效果
app.run(['$rootScope', '$location',
function($rootScope, $location) {
$rootScope.$on('$stateChangeStart', function(evt, next, current) {
alert('route begin change');
});
}
]);
我在這裡獲得了state變化的事件 然而並不知道如何刷新$scope...
PS2:
我是這樣實現的
$scope.$on('$stateChangeSuccess', function(evt, next, current) {
// 数据reload
});
不知道算不算土辦法...
但這樣也出現一個新的問題
$stateChangeSuccess中的方法會觸發2遍,這是什麼情況呢?
你可以把資料存進sessionStorage。接著在下邊那個$on的監聽事件中進行廣播。然後在子層的controller中監聽這個廣播事件。
不需要特別處理啊, 你寫在controller中的程式碼, 每次切換到這個頁面中時, 這裡面的程式碼都會自動執行一次的
controller每次都會產生一個新的實例的,每次state的改變,controller連帶view都是新實例。這個跟angularjs的注入思想也比較一致。你可以自己在controller的程式碼裡log一下。
"$stateChangeSuccess中的方法會觸發2遍" 這個是因為你在view 和Route裡面都寫了Controller訊息