In meiner Route habe ich eine Methode, die versucht, eine Liste von Modellen vom Server anzufordern
%Vor%Offensichtlich kann das manchmal einen 404 zurückgeben.
In dem Moment, in dem das passiert, hört Ember einfach auf, irgendetwas zu tun. Keine Ansicht wird gerendert, kein Controller ist eingerichtet.
Wie kann ich das 404 richtig handhaben (dh eine Fehleransicht anzeigen)?
Schlechte Neuigkeiten: Im Moment macht ember-data nichts, wenn es einen 404 auf find () bekommt. Überhaupt. Das Modell befindet sich für immer im Ladezustand.
Es gibt keine nicht völlig dummen Optionen, hier, meiner Meinung nach. Was ich wahrscheinlich als letzten Ausweg tun würde, ist das Hinzufügen eines notFound
-Attributs auf meinem DS.Model, und anstatt 404 zurückzugeben, gebe JSON mit notFound
auf true
zurück. Es ist schmerzhaft, ich weiß ...
--- Ich hatte ursprünglich eine Lösung angeboten, die find
in einer Unterklasse von RESTAdapter
überschreibt. Dann habe ich gemerkt, dass find
NICHT die Record-Instanz passiert, die angeblich geladen wird. Also, gehen Sie nicht weiter mit 404s, indem Sie den Datensatz in einen Fehlerzustand versetzen.
[HINWEIS: Glutendaten haben sich seit März 2013 dramatisch verändert, die Informationen in dieser Antwort sind möglicherweise nicht mehr funktionsfähig]
Übrigens wurde gerade der "neue" BasicAdapter veröffentlicht. Die Frage war für mich, ob 404-Fehler leichter zu handhaben sind.
Vorgehensweise # 1
Mein erster Ansatz - ähnlich wie Christopher vorgeschlagen hat - war, ein zusätzliches Feld hinzuzufügen, das den HTTP-Status enthält.
%Vor%Und dann habe ich diesen AJAX-Aufruf benutzt:
%Vor%Damit wird die Fehlerantwort (xhr) in einen Hash umgewandelt, der die angeforderte ID und den Statuscode enthält. Schließlich wird das erfolgreiche Ergebnis oder der fehlgeschlagene Hash an den Speicher übergeben.
Diese Art von Arbeiten ist aber nicht sehr praktisch: Wenn Sie eine Liste aller Modellinstanzen anzeigen, müssen diese "Scheininstanzen" manuell herausgefiltert werden.
Vorgehensweise # 2
Eine andere Idee war, ein spezielles Fehlermodell zu erstellen.
%Vor%Und die entsprechende Abfrage:
%Vor%Dadurch wird eine neue Instanz des Fehlermodells geladen und erstellt und in den Speicher abgelegt.
Das Problem dabei ist, dass Ember das nicht wirklich "akzeptierte". Die Anwendung hat gerade das Routing beendet und tut nichts mehr. Das scheint also auch eine Sackgasse zu sein: (
Ich habe dieses Problem auch heute getroffen.
Nachdem jedoch die Quelle betrachtet wurde, scheint das Modell tatsächlich eingerichtet zu sein, um Ember.Evented zu verwenden, und wir können unsere eigenen Handler für diese Fälle hinzufügen.
Die beiden Ereignisse, die mir ins Auge fielen, waren Fehler und didLoad.
In meinem Fall konnte ich Folgendes tun:
%Vor%Hier ist die Quelle von github: Ссылка
Wenn dies tatsächlich die Art und Weise ist, wie wir die Dinge handhaben sollten, wird hoffentlich in naher Zukunft eine Dokumentation in den Leitfäden erscheinen.
Tags und Links ember.js ember-data