这应该很简单,但我无法弄清楚。UI路由器空参数导致导航到错误的路线
我有两个途径:
$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'
}}
});
,如果你使用的用户界面,SREF这工作正常或$ state.go导航到名字的“用户”状态,但如果你输入domain.com/ users /放入URL栏中,即使在尾部藏匿处没有任何内容,它仍会使用空的userId参数进入编辑状态。
通常情况下,这不会是一个问题,但解决editUser路由时没有userId会导致控制台错误,这将是一个很难解决的问题。
这是否容易修复?
尝试改变所述第一'url'到'/用户/'(添加尾随斜线)或改变第二个'url'到'/用户/ {用户id}'。我怀疑其中之一基于URL路径的'/ users /'部分混淆了另一个。 –
第一个停止/用户在没有斜线的情况下工作,并在进入第二个路由时导致双斜线,第二个导致url/users/users。只需要清楚,如果URL是“/ users”或“/ users /”,但是如果它是“/ users/something”,则需要它转到父路由,然后它需要转到编辑页面。 – jonhobbs