Angular UI路由器子状态参数
问题描述:
我正在使用Angular 1.x和Angular UI路由器。
我正在寻找结合儿童的状态参数,像这样的方式:Angular UI路由器子状态参数
$stateProvider
.state('parameters', {
url: '/parametres',
templateUrl: 'views/profile/profile.html',
controller: 'profileCtrl'
})
.state('parameters.personal', {
url: '/informations-personnelles',
params: {tab: 'personal'}
})
.state('parameters.email', {
url: '/mails',
params: {tab: 'email'}
})
.state('parameters.password', {
url: '/mot-de-passe',
params: {tab: 'password'}
});
当我尝试访问/parametres/mot-de-passe
,我tab
PARAM返回undefined
值一样,如果它不绑定。我还尝试绑定parameters
状态中的tab
参数,但param返回我绑定的值。不是处于良好子状态的值...
我正在寻找一种即时获取当我打开一个子URL时,好的tab
参数值。
感谢您的任何帮助。
答
子状态从父母继承其参数。所以如果你不在父母的名字中,他们就不会在孩子身上。在你的情况下,看起来你有3个孩子状态,但没有父母。此外,你说你试图访问一个不存在的状态,这可能是你没有得到你期望的另一个原因。
答
使用$state.params
而不是$stateParams
。您应该能够访问前者的所有参数。
这里唯一需要注意的是确保你的参数有不同的名字,所以你没有冲突。
答
它可能发生,因为在您的父控制器中,您传递一些值,但不能解决在父控制器中相同。
所以父母控制器$stateParams.someVal
如果不存在于子控制器中,那么它将抛出未定义。 所以你必须把解决财产一样,父状态:
$stateProvider.state('contacts.detail', {
url: '/contacts/:contactId',
controller: function($stateParams){
$stateParams.contactId //*** Exists! ***//
},
resolve:{
contactId: ['$stateParams', function($stateParams){
return $stateParams.contactId;
}]
}
}).state('contacts.detail.subitem', {
url: '/item/:itemId',
controller: function($stateParams, contactId){
contactId //*** Exists! ***//
$stateParams.itemId //*** Exists! ***//
}
})
像上面u需要做的
请点击此处查看:https://github.com/angular-ui/ui-router/wiki/URL-Routing
“所以,如果你不在父母名下,他们不会在孩子“ 我对这个答案感到困惑......通过在子状态中使用'parameters.',父母被加载(我可以显示模板,并且控制器也加载,所以......)。 – Bardyl