0

Я знаю, что об этом много написано, но я не могу найти решение этой конкретной проблемы. При изменении состояния я хочу, чтобы текущее состояние было скрыто, а счетчик отображался на $stateChangeStart, а для того, чтобы счетчик был скрыт, когда новое состояние разрешено на $stateChangeSuccess. В настоящее время я имею дело с этим, установив значение showSpinner истина/ложь в $ rootScope, где он находит отражение в представлениях, как так ...

$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams){ 
     $rootScope.showSpinner = true; 
    }) 

    $rootScope.$on('$stateChangeSuccess', function(e, toState, toParams, fromState, fromParams){ 
     $rootScope.showSpinner = false; 
    }) 

Просмотров:

<div class="spinner" ng-if="showSpinner"></div> 
<div ng-if="!showSpinner" ng-show="$state.includes('rulebook.text-view')" ui-view="text-view"></div> 
<div ng-if="!showSpinner" ng-show="$state.includes('rulebook.rules')" ui-view="rules"></div> 
<div ng-if="!showSpinner" ng-show="$state.includes('rulebook.vocab')" ui-view="vocab"></div> 

На данный момент $ StateChangeStart делает то, что я хочу, но есть хорошая задержка в удалении счетчика после того, как новое представление было разрешено на $ stateChangeSuccess, и содержимое было отображено. Не могу понять, почему это происходит. Буду признателен за любую помощь.

ответ

0

Вы попробовали $viewContentLoaded события, упомянутые в руководстве пользователя углового маршрутизатора?

+0

Спасибо за ответ. Я не уверен, что вы имеете в виду, но я пробовал работать с $ viewContextLoaded. Событие стреляет. Я попытался разместить $ rootScope.showSpinner = false внутри этого события и удалить $ stateChangeSuccess. Это предотвращает срабатывание события (прядильщик продолжает вращаться). – hughesjmh