Estou tentando mostrar ou ocultar um indicador de carregamento em um botão quando uma solicitação está ocupada. Eu faço isso com o angular alterando a variável $ scope.loading quando uma solicitação está carregando ou quando termina de carregar.
$scope.login = function(){
$scope.loading = true;
apiFactory.getToken()
.success(function(data){
})
.error(function(error){
})
.finally(function(){
$timeout(function() {
$scope.loading = false;
}, 0);
});
};
No frontend:
<button ng-disabled="loading" class="button button-outline button-positive" type="submit">
Log in
<span ng-if="loading" class="ion-refreshing"></span>
</button>
Isso funciona bem, mas o ícone de carregamento (atualização de íons) é mostrado por cerca de 2 segundos, enquanto a variável $ scope é atualizada imediatamente. Eu tentei $ scope. $ Apply, mas não parece ser o que está errado aqui, o escopo é atualizado muito bem e imediatamente após a solicitação. É apenas o ícone que não está respondendo rápido o suficiente.
Obrigado por me ajudar a entender isso!