我一直在尝试这样做。我想改变状态,因为我的参数已经改变,但我的状态没有任何改变,所以我不想重新加载视图。它很贵,而且会引起闪光。我真的只想得到一个$stateParams
已经发生变化的事件,然后继续。
我能弄清楚如何更新params的唯一方法是:
$state.go($state.current, {param: value});
这有效(codepen),除了我的控制器/视图被重新加载。再一次,我不想要那个。
我想出了一个黑客,但我不喜欢它。首先,我需要告诉它不要通知:
$state.go($state.current, {param, value}, {notify: false});
我可以尝试关注$stateParams
上的更改,但这种变化永远不会发生。相反,我创建了一个全局控制器,它将$stateParams
附加到$rootScope
。然后,从我的视图控制器,$watch
可以$scope.$stateParams
进行更改。
这有效(codepen),但它确实非常混乱。似乎必须有更好的方法来解决这个问题,但我无法找到更好的方法。
思想?
答案 0 :(得分:1)
你怎么看$ $ $ location.search()呢?
Codepen fork:http://codepen.io/anon/pen/mbsgr
更新了$ watch功能:
$scope.$watch(function() {
return $location.search();
}, function(newValue, oldValue) {
if(newValue != oldValue) {
alert('act on state param change');
}
});