Ich habe einen Dienst, bei dem ich Daten vom Server abrufe. Wenn ich auf die Schaltfläche klicke, um die Anfrage an den Server über diesen Dienst zu senden, bleibt das Fenster stehen, bis ich eine Antwort vom Server erhalte. Kann ich irgendetwas tun, um diese Anfrage asynchron zu machen?
Hier ist mein Service.
%Vor%HTML.
%Vor%Code
%Vor%Obwohl es einige Argumente für die Vor- und Nachteile Ihres Ansatzes gibt, denke ich, dass das Problem hier beantwortet wird: AJAX-Aufruf friert den Browser ein wenig ein, während er eine Antwort erhält und erfolgreich ausgeführt wird
Um zu testen, ob dies tatsächlich Teil des Problems ist, tupfen Sie eine Antwort auf und servieren Sie sie statisch. Ich benutze Fiddler oder WireShark, um die Antwort zu bekommen und dann in eine Datei wie testService.json zu speichern. XHR und alle seine verschiedenen Ableitungen wie $ HTTP $ .ajax sehen es als ein Service, obwohl die Überschriften leicht unterschiedlich sein können.
Verwenden Sie das Erfolgsversprechen und schließen Sie die Protokolldaten in einer Gruppe von Objekten ein, die Sie an einen $ scope anhängen können.
Damit Ihr Dienst nicht über eine Blockierungsmethode verfügt, müssen Sie eine Liste mit "LogEntries" erstellen.
%Vor%Dann injizieren Sie in Ihrem Controller Ihren Dienst und verweisen Sie auf das Protokolldaten-Array dieses Dienstes, damit Angular es überwacht und die Ansicht korrekt ändert
%Vor%Dann im HTML einfach etwas über logEntries tun:
%Vor%Tags und Links angularjs asynchronous