Ich habe folgenden, sehr vereinfachte Schnipsel:Wie kann man überprüfen, ob die Daten von einem Versprechen zurück ist leer
c.then(function(data){
vm.checkedOut = data;
});
Es wird entweder eine Aufzeichnung zurückzukehren, oder es wird nicht. In jedem Fall gibt das Versprechen ein Objekt zurück - es sind möglicherweise keine Datensatzdaten angehängt.
So weit, so gut. Hier ist meine Frage: Wie kann ich rekordlose Antworten in meinen Ansichten finden?
ich dies tat:
<div ng-if="vm.checkedOut.loaneeName !== undefined">
checked out!
</div>
loaneeName
eine Eigenschaft des Datensatzes ist, und es wird nicht definiert, wenn kein Datensatz zurückgegeben wird. Irgendwie schlampig, aber es funktioniert.
Allerdings war dies, wie ich das Gegenteil Meldung angezeigt:
<div ng-if="vm.checkedOut.loaneeName === undefined">
not checked out!
</div>
Da vm.checkedOut.loaneeName
wird immer nicht definiert werden, wenn die Seite geladen wird (und Antworten von dem API warten), die „nicht ausgecheckt! " Die Nachricht erscheint, zumindest für eine Weile, was sehr schlecht sein kann, wenn die Verbindungsgeschwindigkeit langsam genug ist.
c.then(function(data){
vm.checkedOut = data;
if(vm.checkedOut.loaneeName === undefined){
vm.forRealsCheckedOut = true;
}
else {
vm.forRealsCheckedOut = false;
}
});
Und dann:
um dieses Problem zu beheben, habe ich folgendes getan
<div ng-if="vm.forRealsCheckedOut === false">
not checked out!
</div>
...
Dies funktioniert, aber es scheint mir auch als etwas grobe Abhilfe für das, was ich davon ausgehen, sollte ein häufiges Problem sein.
Ich bin not die erste Person, die eine Frage so stellen, aber ich habe kein Array and other answers aren't much help.
Gibt es einen besseren Weg?
Sie zumindest vereinfachen könnte ' vm.forRealsCheckedOut = (vm.checkedOut.loaneeName == undefined); 'und' ng-if = "! vm.forRealsCheckedOut" ', aber ansonsten scheint es das zu sein, was Sie wollen. – Bergi
Verwenden Sie ** resize **, bevor Sie den Status laden (führen Sie die API-Anforderung aus und warten Sie, bis sie zurückgegeben wird, bevor Sie die Ansicht rendern). –