AngularJs Run块$ stateChangeStart未被触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJs Run块$ stateChangeStart未被触发相关的知识,希望对你有一定的参考价值。
当应用程序更改路由时,我的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');
}
});
});
})();
答案
$ stateChange *事件已弃用
$stateChange*
事件在1.0中被弃用。它们被$transitions.on*
过渡钩取代。
但是,通过包含stateEvents.js
并依赖于'ui.router.state.events'
角度模块,可以重新启用它们以实现向后兼容性。
<script src="stateEvents.js">
var myApp = angular.module('myApp', ['ui.router', 'ui.router.state.events']);
见UI-router Issue #2720 - $stateChangeStart not being fired on v1.0
另一答案
您的控制台中应该有app not defined
错误。您缺少空依赖项
angular
.module('app',[])
也将其更改为$ location作为运行依赖项,
.run(function ($rootScope,$location) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
以上是关于AngularJs Run块$ stateChangeStart未被触发的主要内容,如果未能解决你的问题,请参考以下文章