我正在使用Angular和AngularUI来构建应用程序,我正在通过$stateChangeStart
事件实现一些路由保护。当我的应用程序首次启动时,我想将$rootScope.currentChevron
初始化为V形列表中的第一个元素。从那时起,另一个控制器将在其自己的范围内修改此currentChevron
对象,但看起来这些更改不会持续回到$rootScope
。这是我的代码
Angular Run
app.run(function ($rootScope) {
$rootScope.Chevrons = [
{
'name': 'Start',
'state': 'new.start',
'active': true,
'next': 'review-accounts'
},
{
'name': 'Review Accounts',
'state': 'new.review-accounts',
'active': false,
'next': 'settings'
},
{
'name': 'Backup Settings',
'state': 'new.settings',
'active': false,
'next': 'final-review'
},
{
'name': 'Final Review',
'state': 'new.final-review',
'active': false,
'next': null
}
];
$rootScope.currentChevron = $rootScope.Chevrons[0];
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var e = event;
// This is where we need to do route protection
// First lets find what Chevron we are currently on
var indexOfChev = $rootScope.Chevrons.indexOf($rootScope.currentChevron);
});
});
内部控制器
$scope.navigate = function (chevron, ind) {
$state.go(chevron.state);
$scope.step.active = false;
chevron.active = true;
$scope.step = chevron;
$scope.currentChevron = $scope.step;
$scope.Index = ind;
}
问题是在navigate
执行后,$rootScope.currentChevron
未更新为新的{{1}}。有没有办法让这个功能起作用?
答案 0 :(得分:0)
将$ rootScope注入控制器,而不是
$scope.currentChevron = $scope.step;
做
$rootScope.currentChevron = $scope.step;