$stateChangeStart не работает, когда пользователь обновляет браузер
Пожалуйста, я использую UI-роутер в моем проекте. $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>
2 ответа
Обновление пользователя не запускает $stateChangeStart или $stateChangeSuccess. Однако $viewContentLoading и $viewContentLoaded не работают.
Так что вы можете попробовать следующее:
$rootScope.$on('$viewContentLoading', function() {
$timeout(function(){
element.addClass('show');
} , 50);
});
$rootScope.$on('$viewContentLoaded', function() {
$timeout(function(){
element.removeClass('show');
} , 700);
});
Попробуй это,
Здесь, если вы измените свое состояние, вы можете увидеть свое состояние в консоли, но если вы перезагрузите страницу, она перезагрузит состояние
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
console.log("Switching To: ", toState.name);
});