我正在使用 angular 1.5.8 , angular-ui-router 0.2.18 & {strong> 5.1.0 版本的anglar-permission库。我已在应用中启用了HTML5模式。
直到今天,当我开始使用$location.search()
方法时,我的应用程序中的一切正常。
我的模块包含依赖项:
angular.app('app', [
...
'ui.router',
'permission', 'permission.ui',
...
]);
我有一个包含各种过滤器的简单用户列表页面。我正在更改应用程序,以便每当过滤器更改时,我都会在URL上设置它(以便用户可以使用应用的过滤器共享URL)。例如,$location.search({query: 'john', sort: 'email'})
。这很正常,当应用任何过滤器时,网址会从http://localhost:9000/user/list更改为http://localhost:9000/user/list?query=john&sort=email。
但是当我刷新页面或在新标签页中打开带有查询字符串的URL时,查询参数将被删除,并且URL将更改回http://localhost:9000/user/list。我一整天都在寻找这个问题的原因,并经历了Angular,ui-router和其他SO帖子的各种GitHub问题,但没有任何帮助。
然后我开始试用&错误并完全删除了这个库模块,事情开始正常。我研究了更多,发现它实际上是导致此问题的permission.ui
模块,所以如果我只是从应用程序中删除permission.ui
模块,则该查询字符串在刷新页面时仍然存在。
我不明白permission.ui
模块是如何解决这个问题的,以及解决方法是什么。
更新1
这是我的状态配置(不确定这在我的问题中是否重要):
var adminPermissions = {
only: 'ROLE_ADMIN',
redirectTo: 'dashboard'
};
$stateProvider
.state('loggedIn', {
abstract: true,
templateUrl: 'views/layouts/logged-in.html'
})
.state('user', {
parent: 'loggedIn',
abstract: true,
url: '/user',
data: {permissions: adminPermissions},
template: '<ui-view/>'
})
.state('user.list', {
url: '/list',
templateUrl: 'views/user/list.html'
});
GitHub问题#401