2016-02-26 3 views
2

Я использую ui-router в своем проекте. $stateChangeStart Событие отлично работает, когда пользователь перемещается между состояниями. Но это не работает, если я обновляю браузер.

Это мой исходный код:

(function(){ 
'use strict'; 

angular.module('app.overlay') 
    .directive('ibLoading', ['$rootScope' , '$timeout', loading]); 

    function loading($rootScope , $timeout){ 
     console.log("In dirrective"); 
     var directive = { 
      restrict:'EAC', 
      link:link 
     }; 

     function link(scope, element) { 

      $rootScope.$on('$stateChangeStart', function() { 
        $timeout(function(){ 
         element.addClass('show'); 
        } , 50); 
       }); 

       $rootScope.$on('$stateChangeSuccess', function() { 
        $timeout(function(){ 
         element.removeClass('show'); 
        } , 700); 
       }); 

     } 

     return directive; 
    } 
})(); 

моего файл макет

<div ng-controller="ShellController as vm"> 
<header class="clearfix"> 
    <ht-top-nav navline="vm.navline"></ht-top-nav> 
</header> 
<section id="content" class="content"> 
    <!--<div ng-include="'app/layout/sidebar.html'"></div>--> 
    <div ui-view></div> 
    <div class="ib-loading">Loading ...</div> 
</section> 
</div> 
+0

Можете ли вы привести несколько примеров кода? –

+0

Это будет зависеть от того, где он используется. Без какого-либо кода никто не сможет вам помочь. Укажите соответствующий код – charlietfl

+0

Ожидаете ли вы, что вы указали начальное изменение при загрузке страницы? Это не так. Все еще неясно, в чем проблема или что ожидаемое поведение – charlietfl

ответ

0

Попробуйте это
Здесь, если вы измените свое состояние вы можете увидеть свое состояние в консоли, но если вы перезагрузите ваш страница перезагрузит состояние

$rootScope.$on('$stateChangeStart', function (event, toState, toParams) { 
    console.log("Switching To: ", toState.name); 
}); 
1

Обновлено пользователем не запускает $ stateChangeStart или $ stateChangeSuccess. Однако $ viewContentLoading и $ viewContentLoaded Удар.

Так вы можете попробовать следующее:

  $rootScope.$on('$viewContentLoading', function() { 
       $timeout(function(){ 
        element.addClass('show'); 
       } , 50); 
      }); 
      $rootScope.$on('$viewContentLoaded', function() { 
       $timeout(function(){ 
        element.removeClass('show'); 
       } , 700); 
      }); 
+0

Да, но вы не можете захватить государство с ними, или есть способ? – Nick