我遇到一个问题,我的" on"事件功能。
这是我的代码:
.run(['$rootScope', '$state', function ($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function (evt, toState) {
if (!sessionStorage.token)
$state.go('main');
});
}]);
我甚至尝试添加
$rootScope.$state = $state;
但这仍然无法奏效。 我调试它时,我不明白为什么$ state是未定义的。
我看到它在网络上的许多例子中都运行良好。
答案 0 :(得分:0)
没有理由,为什么$state
不应该在.run()
中提供。我想还会有其他一些问题。这是a working example,显示了上述内容。
// some simple token holder; until set to tru, only main is accessible
.factory('sessionStorage', function(){return {token: false}})
// we do ask for sessionStorage as well
.run(['$rootScope', '$state', 'sessionStorage', function ($rootScope, $state, sessionStorage) {
$rootScope.$on('$stateChangeStart', function (evt, toState) {
if(toState.name === "main"){
return;
}
if (!sessionStorage.token){
evt.preventDefault();
$state.go('main');
}
});
}]);
唯一重要的变化是我们确实要求angular注入 sessionStorage
。检查here