这两者的区别:请看博客:http://stackoverflow.com/questions/32680292/angularjs-state-and-rootscope-onstatechangestart-issue
使用方法:
在config方法里注册: $urlRouterProvider.otherwise( function($injector, $location) { var $state = $injector.get("$state"); $state.go("cover"); }); $stateProvider .state('auth', { url: '/auth', templateUrl: '../views/authView.html', controller: 'AuthController as auth' }) .state('users', { url: '/users', templateUrl: '../views/userView.html', controller: 'UserController as user' }) ....
app.run(function($rootScope, $state, $location) { $rootScope.$on('$stateChangeStart', function(event, toState, fromState) { //ERROR IS IN THIS BLOCK if($rootScope.authenticated && $rootScope.onboard == 0) { //event.preventDefault(); $state.transitionTo("onboard", null, {notify:false}); $state.go('onboard'); } ...