使用Ui-Router的ui-sref来设置查询参数

Cod*_*rer 16 routing angularjs angular-ui-router

我有以下链接.

<a ui-sref="...">Clicking this adds ?test=true to the query params.</a>
Run Code Online (Sandbox Code Playgroud)

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

PSL*_*PSL 26

您应该能够通过传递带有状态的参数来完成它.

尝试:-

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

用法:

ui-sref ='stateName' - 导航到州,没有参数.'stateName'可以是任何有效的绝对或相对状态,遵循与$ state.go()相同的语法规则

ui-sref ='stateName({param:value,param:value})' - 使用params导航到state.

  • @itcouldevenbeaboat你也需要在你的路线中指定它.例如: - `url:"/ route1?test",`你的路线怎么样?将鼠标悬停在此演示http://plnkr.co/edit/peERl4?p=preview中的route1上,您将看到test = true查询字符串参数 (5认同)
  • 这适用于状态参数,但不适用于查询命令 (4认同)
  • 有没有办法阻止它重新加载页面? (2认同)

bro*_*rms 10

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

.state('myState', {
      url: '/myState?test',
      reloadOnSearch : false,
      ...
    })
Run Code Online (Sandbox Code Playgroud)

只要您的查询在同一状态内发生.


Saj*_*raf 10

只需在状态URL中定义查询参数的名称

$stateProvider.state('posts', {
    url: '/posts?test&answer',
    views: {
      content: {
        templateUrl: 'templates/posts/index',
        controller: 'PostsController'
      },
      navbar: {
        templateUrl: 'templates/partials/navbar'
      }
    }
  })
Run Code Online (Sandbox Code Playgroud)

并使用这样的

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

我正在使用ui-router版本 0.2.15