使用Ui-Router的ui-sref只是为了设置查询参数

时间:2014-08-29 13:30:49

标签: angularjs routing angular-ui-router

我有以下链接。

<a ui-sref="...">Clicking this adds ?test=true to the query params.</a>

有没有办法使用ui-sref属性来更改查询参数而无需重新加载页面或指向另一个函数?

3 个答案:

答案 0 :(得分:26)

你应该可以通过传递带状态的参数来实现。

尝试: -

<a ui-sref="yourStateName({test:true})">Clicking this adds ?test=true to the query params.</a>

<强> Usage:

  

UI-SREF =&#39; Statename的&#39; - 导航到州,没有参数。 &#39; Statename的&#39;可以是任何有效的绝对或相对状态,遵循与$ state.go()

相同的语法规则      

ui-sref =&#39; stateName({param:value,param:value})&#39; - 使用参数导航到州。

答案 1 :(得分:10)

结合PSL的回答,为了防止在设置状态时刷新,只需使用属性reloadOnSearch: false

.state('myState', {
      url: '/myState?test',
      reloadOnSearch : false,
      ...
    })

只要您的查询在同一状态下进行。

答案 2 :(得分:9)

只需在状态URL

中定义查询参数的名称
$stateProvider.state('posts', {
    url: '/posts?test&answer',
    views: {
      content: {
        templateUrl: 'templates/posts/index',
        controller: 'PostsController'
      },
      navbar: {
        templateUrl: 'templates/partials/navbar'
      }
    }
  })

并像这样使用

<a ui-sref="posts({test: true, answer: false})">Next Page</a>

我使用的是ui-router版本0.2.15