2014-05-08 58 views
0

我一直在試圖做到這一點。我想改變狀態,因爲我的參數已經改變了,但是我的狀態沒有改變,所以我不想重新加載視圖。這是昂貴的,它會導致閃光。我真的只想得到一個事件,$stateParams已經改變,並與此。如何在不重新加載視圖的情況下更新參數?

我可以計算出如何更新PARAMS的唯一方法是這樣的:

$state.go($state.current, {param: value}); 

此作品(codepen),除了我的控制器/視圖被重新加載。再一次,我不想要那個。

我想出了一個黑客,但我不喜歡它。首先,我需要告訴它不通知:

$state.go($state.current, {param, value}, {notify: false}); 

I'can嘗試觀看更改上$stateParams,但變化不會發生。相反,我創建了一個全局控制器,將$stateParams附加到$rootScope。然後從我的視圖控制器,我可以$watch更改$scope.$stateParams

這工程(codepen),但它真的很混亂。似乎必須有更好的方式來處理這個問題,但我找不到更好的方法。

想法?

回答

1

您認爲$ watch $ location.search()是什麼意思?

Codepen叉:http://codepen.io/anon/pen/mbsgr

更新$手錶功能:

 $scope.$watch(function() { 
     return $location.search(); 
     }, function(newValue, oldValue) { 
     if(newValue != oldValue) { 
      alert('act on state param change'); 
     } 
     }); 
+0

似乎是一個更好的選擇。我仍然期待看看是否有更好的支持方式,但我比其他選擇更好。好主意。 –

相關問題