使用reloadOnSearch时的AngularJS $ stateParams:false

时间:2014-10-27 12:17:28

标签: javascript angularjs search angular-ui-router

我的应用程序中有一个使用搜索的页面,所以我添加了 " realoadOnSearch:false" ,它完美无缺

我遇到的问题是当导航到具有不同stateParam的相同状态时:

当我从任何其他页面导航到 #/ category / 20 / 时,它工作正常...我在该页面上有一个链接 < em>#/ category / 3 (20的父类别)和URL更新,但内容没有(没有控制台错误)

app.js(主要应用程序)

        .state('category', {
            url: '/category/:categoryId/',
            templateUrl: '/Home/Category',
            controller: 'categoryCtrl',
            reloadOnSearch: false
        })

我尝试添加 target =&#34; _self&#34; 以强制重新加载页面,但它无法正常工作

我还试图观看 $ stateParams 进行更改,但没有任何内容

#/ category / 20 点击指向 #/ category / 3 的链接(反之亦然) )应导航到新页面并重新加载数据,其中搜索应重新加载页面(后者有效,但不是前者)

URL优先是ng-href而不是ng-click,因为它由根控制器管理

修改

我没有找到直接的解决方案,但是我只是禁用了reloadOnSearch并且我的排序按钮仍然有用,所以这对我来说现在是一个解决方案。

1 个答案:

答案 0 :(得分:2)

问题是reloadOnSearch没有按照你的想法行事;它实际上更像reloadOnStateParams。将其设置为false会阻止您在只有stateParams更改的情况下进行状态更改,这就是您在此处所做的更改(从#/category/3转到#/category/20)。

您可以在UI路由器问题页面上看到此文档:https://github.com/angular-ui/ui-router/issues/1079

那里有一些解决方法,但没有一个是好的。您可能最好使用强制点击来强制手动重新加载,如下所示:

$state.transitionTo($state.current, $stateParams, {
  reload: true,
  inherit: false,
  notify: true
});