Sto tentando di mostrare o nascondere un indicatore di caricamento su un pulsante quando una richiesta è occupata. Lo faccio con angolare cambiando la variabile $ scope.loading quando una richiesta si sta caricando o quando ha finito il caricamento.angolare ng-if o ng-show risponde lentamente (2 secondi di ritardo?)
$scope.login = function(){
$scope.loading = true;
apiFactory.getToken()
.success(function(data){
})
.error(function(error){
})
.finally(function(){
$timeout(function() {
$scope.loading = false;
}, 0);
});
};
Nel frontend:
<button ng-disabled="loading" class="button button-outline button-positive" type="submit">
Log in
<span ng-if="loading" class="ion-refreshing"></span>
</button>
Questo funziona bene, ma l'icona di carico (ione-rinfrescante) viene mostrato per circa 2 secondi, mentre la variabile $ campo di applicazione è aggiornato immediatamente. Ho provato $ scope. $ Apply ma non sembra essere quello che non va qui, lo scope viene aggiornato bene e subito dopo la richiesta. È solo l'icona che non risponde abbastanza velocemente.
Grazie per avermi aiutato a capire questo!
Eventuali animazioni coinvolti? – tasseKATT
Negativo. Nessuna animazione coinvolta. L'uso di ng-class sembra invece aiutare. – Jorre
Sto avendo lo stesso o un problema simile.L'ambito viene aggiornato immediatamente e correttamente: l'ho verificato registrando i messaggi dalle funzioni '$ scope' che' ng-if' usa per scoprire se gli elementi rilevanti devono essere mostrati. Tuttavia, i pulsanti con 'ng-if' rimangono erroneamente visibili, o nascosti, per qualche secondo. Quindi, dopo un breve intervallo di tempo, tutti i pulsanti assumono gli stati visibili/nascosti previsti. - Ho lavorato su questo usando invece 'ng-hide'. Versione angolare 1.2.16. – KajMagnus