我有一个 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;
}

10-06 12:33