Ho un singolo configService
nel mio progetto AngularJS che recupera alcuni valori di configurazione dell'intero progetto dal server tramite una richiesta ajax, ovvero come se l'utente debba o meno essere moderato prima che il loro account sia attivato.Rimanda il caricamento di tutta la pagina in AngularJS fino a quando il servizio ajax non è terminato
Per visualizzare le informazioni in base alla configurazione, l'intero caricamento della prima pagina deve essere posticipato fino al completamento di questa richiesta. Il mio servizio si presenta come:
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;
});
Quindi, dal momento che il servizio è un Singleton, questo sarà eseguito solo una volta quando la pagina viene caricata, non su ogni cambiamento del percorso.
Ora so come usare $q
e promette, ma il mio problema è come può differire l'esecuzione di TUTTO di angolare fino a quando questo servizio ha terminato la sua richiesta? La maggior parte delle mie visualizzazioni richiede valori da configService.serverConfig
e dipendono da esso per un comportamento specifico: farlo in modo asincrono e avere un defered.then()
in ogni controller non sembra l'idea migliore.
hai trovato una soluzione? –
No, solo una soluzione alternativa (che non si basa sulle opzioni di configurazione per essere disponibili al caricamento della pagina). Un upvote potrebbe aumentare le probabilità :) – Dyna