我的AngularJs运行块在应用程序更改路由时不执行处理函数,至少这是我的想法。我尝试将一个简单的控制台日志进行测试,它不会记录任何内容。最终目标是检查路由是否需要身份验证。
github存储库https://github.com/guilinden/authenticatedCRUD的链接
(function(){
angular
.module('app')
.run(function ($rootScope, $location) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
var requireLogin = toState.data.requireLogin;
if(requireLogin){
event.preventDefault();
$location.path('/home');
}
});
});
})();
答案 0 :(得分:3)
{1}}事件在1.0中已弃用。它们被$stateChange*
转换挂钩替换。
但是,可以通过包含$transitions.on*
并取决于stateEvents.js
角度模块来重新启用它们以实现向后兼容性。
'ui.router.state.events'
请参阅UI-router Issue #2720 - $stateChangeStart not being fired on v1.0
答案 1 :(得分:2)
控制台中应该出现 app not defined
错误。您缺少空依赖项
angular
.module('app',[])
也将其更改为$ location作为运行依赖项,
.run(function ($rootScope,$location) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {