我有一个 Controller ,有时会使用$location.search({param1: newParam1Value)
来更新位置。
当我有意更改 Controller 中的$ location.search时,我想防止重新加载。否则,我要为此路由/状态保留默认的reloadOnSearch
行为。
我可以在定义状态时将reloadOnSearch
设置为false,但始终为false。
有没有一种方法可以从 Controller 内部切换路线的reloadOnSearch
?或者,我可以保留reloadOnSearch: true
并仅阻止不希望发生的一个实例重新加载其他方式吗?
我正在使用ui.router
。
最佳答案
是的!!您可以有条件地使用reloadOnSearch
。我们知道该状态会通过$ location.search()事件重新加载。如果您的用例是这样的,则在某些情况下,您想重新加载状态,而在其他情况下,您不想重新加载状态,则使用reloadOnSearch
像这样:
$scope.myClickEvent = function () {
// prevent a reload
$state.current.reloadOnSearch = false;
$location.search('page', 2);
// Do your code...
loadData();
}
/*
API调用以加载数据
*/
var function loadData() {
// Do your code...
// Allow to reload state
$state.current.reloadOnSearch = undefined;
}