我的应用程序中有一个使用搜索的页面,所以我添加了 " 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并且我的排序按钮仍然有用,所以这对我来说现在是一个解决方案。
答案 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
});