我有几个基本的参数,经常出现在我的应用程序中。
路由器定义中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。
答案 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"
(相对状态转换)来转换。