【发布时间】:2016-08-23 23:37:05
【问题描述】:
这应该很简单,但我就是想不通。
我有两条路线:
$stateProvider
.state('users', {
url: '/users',
views: {'@': {
templateUrl: 'templates/users.tpl.html',
controller: 'UsersCtrl as users'
}}
})
.state('users.edit', {
url: '/{userId}',
views: {'@': {
templateUrl: 'templates/editUser.tpl.html',
controller: 'EditUserCtrl as editUser'
}}
});
如果您使用 ui-sref 或 $state.go 按名称导航到“用户”状态,这可以正常工作,但是如果您在 URL 栏中键入 domain.com/users/ 它会进入编辑状态空的 userId 参数,即使在尾随 stash 之后没有任何内容。
通常这不会是一个问题,但是在没有 userId 的情况下触发 editUser 路由会导致控制台错误,这将是一个很难修复的问题。
这很容易解决吗?
【问题讨论】:
-
尝试将第一个
url更改为/users/(添加尾部斜杠)或将第二个url更改为/users/{userId}。我怀疑其中一个会根据 URL 路径的/users/部分混淆另一个。 -
第一个在没有斜杠的情况下停止 /users 工作,并在转到第二条路线时导致双斜杠,第二个使 url /users/users。为了清楚起见,如果 URL 是“/users”或“/users/”,我需要它转到父路由,但如果它是“/users/something”,那么它需要转到编辑页面。
标签: javascript angularjs angular-ui-router