statechangestart阻止导航

时间:2014-10-06 07:40:41

标签: angularjs angular-ui-router

$rootScope.$on('$stateChangeStart', function(event, toState  , toParams
                                                   , fromState, fromParams) {
     if(fromState.name=='home' && toState.name == 'search'){
         event.preventDefault();
     }
});

我试图阻止状态转变发生。

event.preventDefault() 

没有这样做。 我希望国家保持现状。

1 个答案:

答案 0 :(得分:4)

您需要什么,应该开箱即用。我创建了a plunker,显示了您的要求。有这三种样本状态

$stateProvider
    .state('home', {
        url: '/home',
        template: '<div>home</div>',
      })
    .state('search', {
        url: '/search',
        template: '<div>search</div>',
      })
    .state('index', {
        url: '/index',
        template: '<div>index</div>',
      })

这个(与问题相同)条件禁止从HOME导航到SEARCH:

$rootScope.$on('$stateChangeStart',
   function(event, toState  , toParams
                   , fromState, fromParams) 
    {
      var isFromHome = fromState.name =='home' ;
      var isToSearch = toState.name == 'search';
      if(isFromHome && isToSearch)
      {
        event.preventDefault();
      }
    });

检查here