У меня есть один configService
в моем проекте AngularJS, который извлекает некоторые значения конфигурации всего проекта с сервера с помощью запроса ajax, то есть, как нужно, чтобы пользователь должен был быть модерирующим до активации учетной записи.Отложить загрузку всей страницы в AngularJS до завершения ajax службы
Для отображения информации в соответствии с конфигурацией, вся загрузка первой страницы должна быть отложена до тех пор, пока этот запрос ajax не будет завершен. Моя служба выглядит следующим образом:
angular.module('clientApp').factory('configService', function ($http) {
var configService = {};
var conf = {};
Object.defineProperty(configService, 'serverConfig', {
get: function() {
return conf;
}
});
$http.get('/api/config').success(function (data) {
conf = $.extend(conf, data);
});
return configService;
});
Так, так как сервис одноэлементен, это будет выполняться только один раз при загрузке страницы, а не при каждом изменении маршрута.
Теперь я знаю, как использовать $q
и обещает, но моя проблема заключается в том, как отложить выполнение ВСЕГО углового, пока эта служба не завершит свой запрос? В большинстве моих представлений потребуются значения от configService.serverConfig
и зависят от него для конкретного поведения - делать это асинхронно и иметь defered.then()
в каждом контроллере не похоже на лучшую идею.
Вы нашли решение? –
Нет, только обходной путь (который не зависит от параметров конфигурации, доступных для загрузки страницы). Upvote может увеличить шанс :) – Dyna