【问题标题】:update $stateParams in ui-router after $location.search() is called调用 $location.search() 后更新 ui-router 中的 $stateParams
【发布时间】:2014-11-16 04:03:15
【问题描述】:

我有一个使用 ionic-framework 的 Angular 应用程序,它在后端使用 ui-router。

在我的一个控制器中,我调用:

$location.search('filter','sometext');

我在路由配置中禁用了 reloadOnSearch。我注意到更新位置不会更新$stateParams。有没有办法强制$stateParams 随着位置的更新而更新?我查看了 ui-router 文档,但没有看到有关此场景的任何内容,但也许我错过了。

【问题讨论】:

  • 我找到了$urlRouter.sync(),但是在 $location 更新后它并没有更新状态参数。
  • 你什么时候使用sync()? $rootScope.$on('$locationChangeSuccess', function(evt) { $urlRouter.sync(); });
  • 这是已验证的错误。 github.com/angular-ui/ui-router/issues/1546

标签: angularjs angular-ui-router ionic-framework


【解决方案1】:

我也遇到过类似的情况。如果您禁用了reloadOnSearch,您将无法跟踪路线更新,但我找到了针对这种情况的解决方案。

观看$stateParams

$scope.$watchCollection('$stateParams', function (newParams) {
    var search = $location.search();

    if (angular.isObject(newParams)) {
      angular.extend(search, newParams);
    }

    $location.search(search).replace();
});

更改$stateParams,而不是路由:

$scope.$stateParams.offset += $scope.$stateParams.limit;

完全是working example

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2018-06-04
    • 2016-04-28
    • 1970-01-01
    • 2016-11-27
    • 2016-01-08
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多