ui-router / ui-sref,继承参数?

时间:2016-12-29 22:57:35

标签: angularjs angular-ui-router

我有几个基本的参数,经常出现在我的应用程序中。

路由器定义中url的简化示例:

rc = 0

我是否需要在每个state.go()或ui-sref上传递this:id参数?

示例:

url:'/settings/:id'
url:'/profile/:id'
url:'/account/:id'

如果有办法复制命名的url参数并指定一个特定的参数,如果我想替换它或省略它,我会更简单。

示例:

ui-sref="settings({id:vm.id})"
ui-sref="profile({id:vm.id})"
ui-sref="account({id:vm.id})"

当且仅当我想覆盖它时:

ui-sref="account"

根据API继承是默认行为: “inherit Boolean(默认为true),如果为true,则会从当前网址继承url参数。” https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options

这也适用于ui-sref也符合: “ui-sref和$ state.go之间没有功能差异。请参阅文档” Difference between ui-sref and $state.go in AngularJS UI-Router

这似乎微不足道,或者我误解了一些东西:-( 我试过玩嵌套状态,但真正的应用程序没有嵌套状态carasteristics。

1 个答案:

答案 0 :(得分:2)

我认为您需要反转网址的顺序,将其更改为以下内容:

url: user/:id/settings
url: user/:id/profile
url: user/:id/account

无论如何,这样做更有意义,你没有查找设置的id,你正在查找用户/应用程序/网站/等的设置 id :id。您可以将父状态user设为abstract,并将其中一个子状态设置为导航到user/:id的默认状态。这样,id就会被继承,但你可以简单地通过说ui-sref="^.account"(相对状态转换)来转换。