Я знаю, что об этом много написано, но я не могу найти решение этой конкретной проблемы. При изменении состояния я хочу, чтобы текущее состояние было скрыто, а счетчик отображался на $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, и содержимое было отображено. Не могу понять, почему это происходит. Буду признателен за любую помощь.
Спасибо за ответ. Я не уверен, что вы имеете в виду, но я пробовал работать с $ viewContextLoaded. Событие стреляет. Я попытался разместить $ rootScope.showSpinner = false внутри этого события и удалить $ stateChangeSuccess. Это предотвращает срабатывание события (прядильщик продолжает вращаться). – hughesjmh