Nawiasem mówiąc, „nowy” BasicAdapter został właśnie wydany teraz. Pytanie brzmiało: czy to ułatwi obsługę 404 błędów.
Podejście nr 1
Moje pierwsze podejście - podobny do tego, co Christopher sugerował - było dodać dodatkowe pole zawierający status HTTP.
status: DS.attr("number");
A potem użyłem tego AJAX połączenia:
$.getJSON(url, data).then(null, function(xhr) {
return {
id: id,
statusCode: xhr.status
};
}).always(function(data) {
return process(data).load();
});
Co to robi jest przekształcenie odpowiedź błędu (XHR) do mieszania zawierającego żądany identyfikator i kod stanu. Ostatecznie wynik pomyślny lub nieudany hash są przekazywane do sklepu.
Ten rodzaj prac, ale nie jest zbyt praktyczny: Po wyświetleniu listy wszystkich instancji modelu te "fałszywe" wystąpienia muszą zostać odfiltrowane ręcznie.
Podejście nr 2
Innym pomysłem było stworzenie specjalnego modelu błędzie.
App.Error = App.Model.extend({
status: DS.attr("number")
});
a zapytanie według:
$.getJSON(url, data).then(null, function(xhr) {
return App.store.load(App.Error, {}, {
id: 0,
status: xhr.status
});
}).done(function(data) {
return process(data).load();
});
To będzie ładować i utworzyć nową instancję modelu błędu i umieścić go w sklepie.
Problem polega na tym, że Ember tak naprawdę "nie akceptował" tego. Aplikacja przestała routować, nic już nie robiąc. Tak więc wydaje się to ślepy zaułek, a także :(
To jest do bani. Chodzi mi o to, że wiedziałem, że dane z ember były nowatorskie, ale to jest szalone. Ale dzięki za odpowiedź! – stephanos
Czy myślisz, że dzięki [ogłoszeniu BasicAdapter] (http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html) może to być łatwiejsze? – stephanos
Zobacz ten [wydanie] (https://github.com/emberjs/data/issues/296) – pjlammertyn