我在Angular UI router中有两种状态:
State
|-Menus (with 2 nested state)
| |- menus.list
| |- menus.instruction
|-Order
当我从菜单访问menus.list时,我得到了ID为4的范围,但是当我从订单访问菜单时,我得到了ID为28的范围。
之所以对我造成问题,是因为我在
Menus
控制器中注册了以下函数。$rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
if(toState.name === 'menus.list'){
$scope.stateOrder = 1;
}
if(toState.name === 'menus.instruction'){
$scope.stateOrder = 2;
}
});
我面临的问题是,当我从
Menus
访问menus.list时,它会更新模板文件中的$scope.stateOrder
,但是当我从menus.list
状态输入Order
时,它不会更新模板中的$scope.stateOrder
。为什么会这样呢? 最佳答案
我认为您想在运行阶段中将带有$rootScope
的代码放在您的角度应用程序的config
部分下,这将触发用于设置stateOrders的回调函数。例如:
angular.module('yourApp', ['ui.router'])
.config(function($stateProvider, $urlProvider) {
//details omitted
}).run(function($rootScope, $urlRouter, $state, $stateParams) {
$rootScope.$on('$stateChangeSuccess', function(e, toState) {
e.preventDefault();
if(toState.name === 'menus.list'){
$scope.stateOrder = 1;
}
if(toState.name === 'menus.instruction'){
$scope.stateOrder = 2;
}
})
});