2013-06-29 4 views
7

Angenommen, ich versuche, einen Foo-Datensatz im Back-End zu speichern. Aus welchem ​​Grund auch immer, das Backend kehrt niemals zurück (weder Erfolg noch Misserfolg).Ember Data: Wie kann ich einen Datensatz löschen/löschen, der im Status "inFlight" stecken geblieben ist?

Von dem, was ich sehen kann, sieht es so aus, als ob foo im Zustand "in flight" bleibt. Das Problem mit diesem Zustand ist, dass es den Datensatz vollständig sperrt - Sie können nichts dagegen tun (kann nicht zurückgesetzt werden, kann nicht entladen werden). Ich verstehe, warum es so ist (um zu versuchen, die Dinge konsistent zu halten). Aber gibt es etwas, was Sie an einem solchen Randfall tun können?

+0

ich das gleiche Problem konfrontiert, bitte posten, wenn Sie die Antwort finden. –

Antwort

6

Ich habe nicht versucht, aber Sie könnten eine Lösung, indem man glut-Daten Quellcode, speziell states.js finden: https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L306-L351

Nicht sicher, es ist eine solide beste Praxis hier, aber meine beste Vermutung ist, dass Sie wiederherstellen können, indem Sie becameInvalid an den stateManager des Modells senden.

+0

Vielen Dank Mike. Sehr hilfreich. Es ist ein bisschen schwierig zu verwenden, wenn Beziehungen involviert sind, aber ich habe es irgendwann zum Laufen gebracht. Danke noch einmal. – PJC

6

Aufbauend auf Mike's Vorschlag, landete ich mit dem Follow-up:

record.send('becameInvalid'); 
record.unloadRecord(); 
Verwandte Themen