使用permission.ui模块

时间:2017-03-25 13:10:55

标签: angularjs angular-ui-router angular-permission

我正在使用 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

0 个答案:

没有答案