2

我正在使用angular 1.5.8angular-ui-router 0.2.185.1.0版本的angular-permission库。我已在应用程序中启用 HTML5 模式。

直到今天我开始使用$location.search()方法时,我的应用程序中的一切都运行良好。

我的模块包括依赖项:

angular.app('app', [
    ...
   'ui.router',
   'permission', 'permission.ui', 
   ...
]);

我有一个带有各种过滤器的简单用户列表页面。我正在更改应用程序,以便每当过滤器更改时,我都会在 URL 上设置它(以便用户可以与应用的过滤器共享 URL)。例如,$location.search({query: 'john', sort: 'email'})。这工作正常,当应用任何过滤器时,URL 将从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

4

0 回答 0