angularjs - 设置 reloadOnSearch=false 时如何在 angular-ui-router 中查看状态参数

标签 angularjs angular-ui-router

我有一个页面显示了一个大表,其中包含排序、过滤等功能。我将参数(要排序的列、应用的过滤器)“保存”到 URL 中,以便这些内容包含在浏览器历史记录中,并且可以访问返回或发送包含所有参数的链接给其他人。为了在不导致重新加载的情况下操作 URL,我将 reloadOnSearch=false 设置为我的 ui 路由器状态。

在大多数情况下,效果很好:我可以将链接发送给其他人,如果我遵循从我的表格页面引出的链接,我可以使用浏览器的后退按钮,并使用与以前相同的设置最终得到相同的表格.

但是,如果我在已处于所需状态时操作参数(搜索或 stateParam,无关紧要)......单击链接或手动编辑浏览器的地址栏,这绝对没有效果。如果我使用“后退”按钮,情况也是如此。 URL 中的参数更改,但 View 未更新。

我不希望由于 stateParam 更改而发生完全成熟的重新加载,但我仍然希望引起注意。

我尝试了以下方法来引起注意:

$scope.$watch(function() {
  return $stateParams['someStateThatMightChange'];
}, function(newVal, oldVal) {
  if (newVal !== oldVal) {
    alert('Hey, I have been changed!');
  }
});

但是,如果我操纵 URL 使 someStateThatMightChange变化,什么也没有发生。警报不显示。观看 stateParameters 的正确方法是什么?

最佳答案

你有没有试过 - 例如?
$scope.$watch(function () { return $state.params.tabId; }, function (newParams, oldParams) { console.log(newParams, oldParams); if (newParams !== oldParams) { alert('Hey, I have been changed!'); } });

关于angularjs - 设置 reloadOnSearch=false 时如何在 angular-ui-router 中查看状态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755119/

相关文章:

javascript - 加载 Angular View

javascript - 摘要循环与脏检查相同吗?

javascript - ui-router-- 使路由的 URL 与具有 $stateParams 的另一个状态共享同一级别?

javascript - 如何调试 Angular 库错误?

javascript - Angularjs 不呈现 $rootscope 数据

javascript - AngularJS 如何将日期/月/年添加到日期

angularjs - 如何从指令部分调用 ng-click?

javascript - 如何将 $state 变量传递给其他 2 个同级 $states?

javascript - 过滤 ng-repeat 但保留初始长度/计数

javascript - 错误: $injector:modulerr Module Error Failed to instantiate module printStation due to: Error: [$injector:modulerr