Я успешно настроил индикатор загрузки всей страницы в Angular, следуя этому методу. Он использует ng-hide/ng-show, которые я постепенно добавляю и исчезаю с помощью CSS. Вот мой код:
Немного HTML:
<div ng-show="loading" class="loader">Loading</div>
Небольшая часть CSS:
.loader {
transition: 0.25s linear all;
opacity: 0;
visibility: hidden;
}
.ng-hide-add {
opacity: 0;
visibility: hidden;
}
.ng-hide-remove {
opacity: 1;
visibility: visible;
}
Угловой бит:
myApp.controller('appController', function($scope, $route, $rootScope) {
$scope.$on('LOAD',function(){$scope.loading=true});
$scope.$on('UNLOAD',function(){$scope.loading=false});
});
myApp.controller('pageController', function($scope) {
$scope.$emit('LOAD')
angular.element(document).ready(function () {
$scope.$emit('UNLOAD');
});
});
Это выглядит красиво при загрузке новых страниц, но как только вы кэшируете страницы в приложении и возвращаетесь к этим страницам, вы пропускаете исчезающие переходы страниц, поскольку загрузчик не нужен.
Как я могу гарантировать, что загрузчик будет отображаться не менее 500 мс, если страница кэширована, и в противном случае загрузчик не будет отображаться?
Есть ли лучший способ подойти к этой проблеме?
Спасибо.