我使用$state.go();來切換頁面
其中有些頁面的數(shù)據(jù)是動態(tài)的,我希望每次進(jìn)來都重新加載數(shù)據(jù)。
請問如何每次當(dāng)切換到這個(gè)頁面時(shí)都重新加載頁面(重新執(zhí)行controller中的方法)?
PS:
$state.go('page',null,{
reload:true
});
這個(gè)也并沒有效果
app.run(['$rootScope', '$location',
function($rootScope, $location) {
$rootScope.$on('$stateChangeStart', function(evt, next, current) {
alert('route begin change');
});
}
]);
我在這里獲得了state變化的事件 然而并不知道如何刷新$scope...
PS2:
我是這樣實(shí)現(xiàn)的
$scope.$on('$stateChangeSuccess', function(evt, next, current) {
// 數(shù)據(jù)reload
});
不知道算不算土辦法...
但是這樣也出現(xiàn)一個(gè)新的問題
$stateChangeSuccess中的方法會觸發(fā)2遍,這是什么情況呢?
你可以把數(shù)據(jù)存進(jìn)sessionStorage。接著在下邊那個(gè)$on的監(jiān)聽事件中進(jìn)行廣播。然后在子層的controller中監(jiān)聽這個(gè)廣播事件。
不需要特別處理啊, 你寫在controller中的代碼, 每次切換到這個(gè)頁面中時(shí), 這里面的代碼都會自動執(zhí)行一次的
controller每次都會生成一個(gè)新的實(shí)例的,每次state的改變,controller連帶view都是新實(shí)例。這個(gè)跟angularjs的注入思想也比較一致。你可以自己在controller的代碼里log一下。
"$stateChangeSuccess中的方法會觸發(fā)2遍" 這個(gè)是因?yàn)槟阍趘iew 和Route里面都寫了Controller信息