Angular UI-Router在重新加载时重置查询字符串参数

时间:2015-05-28 13:34:06

标签: angularjs angular-ui-router

我目前的状态如下:

.state('test-event-list', {
    parent: 'private',
    url: '/test-events?search&sortc&sortd&pagesize&page&select&status',
    reloadOnSearch: false,
    views: {
        'view@body': {
            templateUrl: 'app/config-test/test-event/list.html',
            controller: require('./config-test/test-event/list')
        }
    },
    data: {
        auth: true
    }
})

我使用$ location.search()在查询字符串中设置不同的参数,例如排序,列表大小和列表页面。

例如,URL可能如下所示:

/test-events?pagesize=25&page=1

我有一个菜单,其中包含以下链接以选择测试事件列表:

<a ui-sref="test-event-list" ui-sref-opts="{reload: true, inherit: false}">Tests</a>

在状态“test-event-list”中,单击此链接,可以部分完成我想要的操作:重置列表的参数并重新加载页面。但它没有做的是从查询字符串中删除params。

如何从网址中删除“?pagesize = 25&amp; page = 1”?

ui-router提供的继承标志似乎没有做太多。我使用的是最新版本的ui-router(0.2.15)。

2 个答案:

答案 0 :(得分:7)

你可以尝试去:

<a ui-sref="test-event-list({})" ui-sref-opts="{reload: true, inherit: false}">Tests</a>

因为查询字符串参数不是必需的

答案 1 :(得分:3)

我遇到了同样的问题,我只是想从URL的末尾删除查询。我能够通过为每个参数传递一个空字符串来删除查询。对你来说它看起来像这样。

<a ui-sref="test-event-list({ pagesize: '', page: '' })">Tests</a>

对我来说有点不同。我不需要传递当前路线名称。

<a ui-sref="{ date: '' }">all logs</a>