Hier ist ein Beispiel dafür, wie Sie mehr api Anrufe vermeiden können. Es sieht vielleicht anders aus als Ihr Code, aber da Sie keinen Code zur Verfügung gestellt haben, ist dies das Beste, was ich tun kann.
In Ihrem Controller haben Sie eine Variable, die Sie beim ersten Klick auf true setzen und auf "false" setzen, wenn Ihr API-Aufruf mit einer Antwort zurückkehrt. Jedes Mal, wenn die Funktion ausgeführt wird, die den API-Aufruf ausführt, prüfen Sie, ob diese Variable wahr ist. Wenn dies der Fall ist, kehren Sie einfach zurück, bevor Sie den API-Aufruf erneut durchführen. Dies ist der Code (Ich bin das Überspringen hier Best Practices, um die Probe minimal zu halten):
angular.module('app').controller('myController', function($http){
var ctrl = this;
ctrl.isDeleting = false;
ctrl.deleteRecord = function(id){
if(ctrl.isDeleting){
return;
}
ctrl.isDeleting = true;
$http.delete('[your_api_url]/' + id).finally(function(){
ctrl.isDeleting = false;
});
};
});
Dann würde Ihre html wie folgt aussehen:
<img src="images/delete.png" ng-click="$ctrl.deleteRecord(id)" ng-class="{'img-disabled': $ctrl.isDeleting}" />
und einige CSS für visuelle hinzufügen Rückmeldung an den Benutzer:
.img-disabled {
cursor: default;
opacity: 0.5;
}
Das ist es.
Noch einmal, ich habe keine Ahnung, wie Ihr Code aussieht, daher habe ich ein paar Annahmen getroffen, die Sie bei der Anwendung dieser Lösung berücksichtigen müssen.
den Klick deaktivieren, bis der Datensatz gelöscht wird. –
Was ist mit Dreifachklicks? Fünfmal Klicks? Sie müssen für dieses Bild eine Markierung setzen, um alle außer dem ersten Klick zu ignorieren. – tadman
@NikolajDamLarsen Ich sehe, dass sogar ng-deaktiviert nicht funktioniert. –