2013-06-29 5 views
7

Powiedzmy, że próbuję zapisać rekord Foo na zapleczu. Z jakiegoś powodu back-end nigdy nie wraca (ani sukces, ani porażka).Dane Ember: jak mogę usunąć/wyładować zapis, który utknął w stanie "inFlight"?

Z tego, co widzę, wygląda na to, że foo pozostaje w stanie "w locie". Problem z tym stanem polega na całkowitym zablokowaniu rekordu - nie można na nim nic zrobić (nie można wycofać, nie można rozładować). Rozumiem, dlaczego tak jest (aby zachować spójność). Ale czy jest coś, co możesz zrobić w tak ekstremalnym przypadku?

+0

Jestem stoi ten sam problem, proszę pisać jeśli znajdziesz odpowiedź. –

Odpowiedz

6

ja nie próbowałem tego, ale można znaleźć rozwiązanie, patrząc na kodzie źródłowym Ember transmisji danych, w szczególności states.js: https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L306-L351

Nie wiesz, tam jest stały najlepszych praktyk tutaj, ale mój najlepszy przypuszczenie możesz odzyskać, wysyłając becameInvalid do menedżera stanu modelu.

+0

Wielkie dzięki Mike. Bardzo pomocne. Używanie relacji jest bardzo trudne, ale udało mi się to w końcu osiągnąć. Dzięki jeszcze raz. – PJC

6

Opierając się na Mike's sugestią, skończyło się z następujących czynności:

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