嵌套状态和查询参数

时间:2016-06-09 02:25:42

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

在我的应用程序中,我想为一个只有查询参数的子状态创建单独的视图/控制器。

的内容
.state('article') {
    url: '/articles/:articleID',
    controller: 'articleController'
}
.state('article.raw') {
    url: '?raw',
    controller: 'rawArticleController'
}

这适用于最新版本的UI-Router,但查询参数?raw未显示在URI中。例如,如果我带article.raw进入{articleID: 'Hello'}州,我仍然会看到此

http://app/articles/Hello

而不是这个

http://app/articles/Hello?raw

我已经四处寻找并发现了这些相关问题,但它们并没有解决我的问题。任何见解将不胜感激!

2 个答案:

答案 0 :(得分:1)

a working plunker

一般来说,UI-Router很难在没有常量的情况下理解url定义(即只使用查询字符串参数)

所以,我们应该使用一些特定的名称

url: "/child?raw"

或至少“/”

     .state('article', {
        url: '/articles/:articleID',
        controller: 'articleController',
        templateUrl: "views/article.html",
      })
    .state('article.raw', {
        url: '/?raw',
        controller: 'rawArticleController',
        templateUrl: "views/raw.html",
    })

现在所有这些链接都可以使用

  <a ui-sref="article">
  <a ui-sref="article.raw">
  <a ui-sref="article({articleID: 1})">
  <a ui-sref="article({articleID: 22})">
  <a ui-sref="article.raw({articleID: 333, raw: 'someRaw'})">
  <a ui-sref="article.raw({articleID: 4444, raw: 'otherRaw'})">

  <a href="#/article">
  <a href="#/articles/1234">
  <a href="#/articles/1/?raw='yyy'">
  <a href="#/articles/22/?raw=zzz">

检查here

答案 1 :(得分:0)

只是简单的一个添加infront /喜欢这个(/ articalraw?raw)

.state('article.raw') { url: '/articalraw?raw' controller: 'rawArticleController'}

HAppy Coding