У меня есть приложение AngularJS и внутри функции .run, я получаю настройки своего сайта с сервера и добавляю их в корневую область.AngularJS ждет ресурса в .run
.run(function ($rootScope, SettingResource) {
// Get the site settings (could be done in app controller?)
$rootScope.SiteSettings = SettingResource.get();
});
Мне нужно будет получить доступ к этим настройкам в других контроллерах. Как я могу дождаться, когда это будет готово до загрузки других контроллеров?
Просто для справки, вот служба ресурса:
function settingFactory($resource) {
return $resource('/api/settings', {id: '@id'}, {'update': {'method': 'PUT'}});
}
Можете ли вы получить настройки с помощью AJAX, а затем вызвать '.run' после завершения вызова AJAX? – Max
Используйте обещание и попросите его решить его. Или используйте таймаут в контроллере, ожидая, что значение не будет равно нулю. –
Я уверен, что блок .run с запуском async, поэтому вы не сможете ждать запроса на получение. Просто используйте какой-то злой jQuery или ванильный XMLhttp-запрос, чтобы преформировать запрос на получение, назначить этот материал в окно, а затем вручную загрузите угловое приложение. Затем в блоке .run назначьте материал из окна в ваш $ rootScopea, и ваши контроллеры будут иметь доступ к данным при их создании. –