Моя страница загружает и применяет CSS, определенный в одной из его ссылок css. У меня также есть угловой контроллер, который вызывает некоторые сервисы для захвата некоторых данных. Эти данные также будут применять стили CSS (через угловые) в зависимости от типа возвращаемых данных.
Проблема заключается в том, что, поскольку услуги должны ждать долю секунды или около того для данных, чтобы манипулировать стилями на странице, это появление задержки применяется к стилям страницы.
Загрузка страницы применяет CSS... ждет возвращения данных из служебного вызова, а затем применяет еще несколько стилей.
Есть ли способ подождать, пока данные вернутся до того, как будут применены какие-либо стили на странице, будь то из ссылки css html или угловой директивы, чтобы избежать этой проблемы с задержкой/загрузкой?
Вы можете предварительно загрузить данные до разрешения углового маршрута.
Пример:
$routeProvider
.when('/bar/foo/',
{
templateUrl: '',
controller: Ctrl,
resolve: {
data: ['service', function (service) {
return service.function();
}
],
}
})
Внесите 'data'
в зависимость от вашего контроллера. В этом случае данные доступны до отображения страницы.
Как ваш сервис "применяет еще несколько стилей"? Это добавление тега ссылки в DOM?
Вы можете вручную сохранить разные стили, которые вы получаете во временной переменной, и применять их все сразу, когда вы знаете, что у вас есть все они.
Еще одна приятная альтернатива - скрыть всю страницу, например, с помощью логотипа или индикатора выполнения или просто белую страницу, пока не будут применены все ваши стили. В своем верхнем контроллере поставьте некоторый $scope.pageReady
что вы установите значение true
только ваши службы вернут весь CSS. В то же время скройте содержимое:
<div ng-show = "pageReady"> ... </div>