我们在一个页面上有几种状态,因此各州都没有分配任何网址。有没有办法为无URL状态指定默认状态?可能类似于$urlRouterProvider.otherwise('/');
。
我尝试使用Angular的run
语句或控制器内的状态但导致transition superseded
错误,这可能是由于$state
hasn& #39; t已初始化。
以下是一个简短的例子。我想直接在stateA
开始。
angular
.module('myModule')
.config([
'$stateProvider',
function($stateProvider) {
$stateProvider
.state('stateA', {
controller: function () {
// Do some magic related to state A
}
})
.state('stateB', {
controller: function () {
// Do some magic related to state B
}
});
}
])
.controller(['$state', '$timeout', function($state, $timeout){
// My global controller
// To set a default state I could do:
// $timout(function () {
// $state.go('stateA');
// }, 0);
// But that doesn't feel right to me.
}]);
更新:
感谢this answer我发现我必须将$state.go
包裹到$timeout
中,以避免transition superseded
错误。
答案 0 :(得分:5)
这将调用custom rule进入默认状态而不会篡改网址。
$urlRouterProvider.otherwise(function($injector) {
var $state = $injector.get('$state');
$state.go('stateA');
});`