首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有angular ui-router的多个可选参数

具有angular ui-router的多个可选参数
EN

Stack Overflow用户
提问于 2014-12-14 07:10:29
回答 1查看 22.4K关注 0票数 19

我尝试使用多个可选参数与ui-router,但它似乎不起作用。下面是我做的测试:

单个参数就可以了

代码语言:javascript
复制
state.url       url called     state param values

/page/:x        /page/         $stateParams.x == ""
/page/:x        /page/2        $stateParams.x == "2"

一个可选参数就可以了

代码语言:javascript
复制
/page/:x?       /page/         $stateParams.x == ""
/page/:x?       /page/2        $stateParams.x == "2"

两个参数都没问题(除了第一个例子中丑陋的双斜杠,/page/page/变成了/page//。但由于参数不是可选的,所以这是可以的)

代码语言:javascript
复制
/page/:x/:y     /page//        $stateParams.x == "" && $stateParams.y == ""
/page/:x/:y     /page/2        $stateParams.x == "" && $stateParams.y == ""
/page/:x/:y     /page/2/       $stateParams.x == "2" && $stateParams.y == ""
/page/:x/:y     /page/2/3      $stateParams.x == "2" && $stateParams.y == "3"

两个可选参数的行为很奇怪。第二个参数总是未定义的,当我指定第二个参数时,它不能求解第一个参数。

代码语言:javascript
复制
/page/:x?/:y?   /page/         $stateParams.x == "" && $stateParams.y == undefined
/page/:x?/:y?   /page/2        $stateParams.x == "2" && $stateParams.y == undefined
/page/:x?/:y?   /page/2/       $stateParams.x == "" && $stateParams.y == undefined
/page/:x?/:y?   /page/2/3      $stateParams.x == "" && $stateParams.y == undefined
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 05:19:35

UI-路由器可选参数不是通过修改URL指定的。相反,它们是使用状态定义中的params对象指定的。

声明url: '/page/:x?/:y?'没有将x和y标记为可选参数。相反,问号用于分隔URL和URL的查询参数部分。

阅读UrlMatcher文档和$stateProvider.state文档中针对url的描述文本,然后阅读针对params的描述文本。

您最终将获得如下配置的可选参数:

代码语言:javascript
复制
$stateProvider.state('page', {
  url: '/page/:x/:y',
  params: { 
    x: 5,  // default value of x is 5
    y: 100 // default value of y is 100
  }
})
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27464625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档