Кстати, «новые» BasicAdapter было выпущено только в настоящее время. Вопрос для меня был, облегчит ли это обработку 404 ошибок.
Подход № 1
Мой первый подход - похоже на то, что Кристофер предлагал - было добавить дополнительное поле, содержащее статус HTTP.
status: DS.attr("number");
И тогда я использовал этот AJAX вызов:
$.getJSON(url, data).then(null, function(xhr) {
return {
id: id,
statusCode: xhr.status
};
}).always(function(data) {
return process(data).load();
});
Что это делает для преобразования ответа об ошибке (XHR) на хэш, содержащий требуемый идентификатор и код состояния. Наконец, успешный результат или неудавшийся хэш передаются в магазин.
Этот вид работ, но не очень практичен: когда вы показываете список всех экземпляров модели, эти «макетные» экземпляры должны быть отфильтрованы вручную.
Подход № 2
Другая идея состояла в том, чтобы создать специальную модель ошибок.
App.Error = App.Model.extend({
status: DS.attr("number")
});
И по запросу:
$.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();
});
Это позволит загрузить и создать новый экземпляр модели ошибок и поместить его в магазин.
Проблема в том, что Эмбер на самом деле не «принимал» это. Приложение просто прекратило маршрутизацию, больше ничего не делая. Так что это похоже на тупик, а :(
Это отстой. Я имею в виду, что я знал, что данные ember - это передний край, но это безумие. Но спасибо за ваш ответ! – stephanos
Как вы думаете, [анонимность BasicAdapter] (http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html) это может быть проще? – stephanos
см. Это [выпуск] (https://github.com/emberjs/data/issues/296) – pjlammertyn