我想要做这样的事情在我的应用程序,其中URL相同级别的撞击无论是baz
状态,即绝对命名,或biz
,需要一个参数状态。
angular.module('foo')
.config(function($stateProvider){
$stateProvider
.state('baz', {
url: '/baz',
templateUrl: '/templates/baz.html'
})
.state('biz', {
url: '/:biz',
templateUrl: '/templates/biz.html',
resolve: {
biz: function($stateParams){
// resolve whatever $stateParams.biz should be
}
}
})
})
然而,发生了什么是UI的路由器总是击中biz
状态,并解释“巴兹”作为该状态的参数。 有一种优雅的方式来让UI路由器知道什么击中“/巴兹”应解决的baz
状态?
我知道我可以使用$stateChangeStart
,做这样的事情:
$rootScope.$on('$stateChangeStart', function(event, toState, toParams){
if (toParams.biz === "baz"){
event.preventDefault();
$state.go('baz')
}
})
但是,这还远远优雅,似乎是一个黑客。