Ich versuche, eine Ladeanzeige auf einer Schaltfläche anzuzeigen oder auszublenden, wenn eine Anforderung beschäftigt ist. Ich mache das mit Angular, indem ich die Variable $ scope.loading ändere, wenn eine Anfrage geladen wird oder wenn sie geladen ist.
$scope.login = function(){
$scope.loading = true;
apiFactory.getToken()
.success(function(data){
})
.error(function(error){
})
.finally(function(){
$timeout(function() {
$scope.loading = false;
}, 0);
});
};
Im Frontend:
<button ng-disabled="loading" class="button button-outline button-positive" type="submit">
Log in
<span ng-if="loading" class="ion-refreshing"></span>
</button>
Dies funktioniert einwandfrei, aber das Ladesymbol (Ionenauffrischung) wird ca. 2 Sekunden lang angezeigt, während die Variable $ scope sofort aktualisiert wird. Ich habe $ scope. $ Apply ausprobiert, aber das scheint hier nicht falsch zu sein. Der Bereich wird einwandfrei und unmittelbar nach der Anforderung aktualisiert. Es ist nur das Symbol, das nicht schnell genug reagiert.
Danke, dass du mir geholfen hast, das zu verstehen!
$scope
Funktionen protokolliert habe , ng-if
mit denen herausgefunden wird, ob die relevanten Elemente angezeigt werden sollen. Schaltflächen ng-if
bleiben jedoch für einige Sekunden falsch sichtbar oder ausgeblendet. Nach kurzer Zeit nehmen alle Tasten ihren beabsichtigten sichtbaren / verborgenen Zustand an. - Ich habe das umgangen, indem ich ng-hide
stattdessen verwendet habe. Winkelversion 1.2.16.