Как сохранить изменения данных после совершения транзакции, включая установку отношения принадлежности к

У меня возникли трудности с установкой отношения принадлежности к данным Ember. У меня есть пример jsfiddle для демонстрации. Моя первоначальная проблема заключалась в том, что я получал следующую ошибку:

Uncaught Error: <DS.StateManager:ember5035> could not respond to event loadedData in state rootState.loaded.updated.inFlight.

Это произошло только тогда, когда я обновил отношение принадлежности к модели с помощью метода select. Это использовало Ember Data, встроенный в RestAdapter. В текущем примере я использую FixtureAdapter и не могу сохранить какие-либо изменения (если вы проверите скрипку и отредактируете имя одной книги, вы увидите, что оно возвращается к исходному имени)? Кажется, они возвращаются, как только адаптер имитирует «ответ сервера»? Есть ли способ смоделировать правильный ответ сервера?

Кроме того, мне интересно, являются ли мои беды результатом того, как я настроил транзакцию хранилища данных. Я использую следующий подход в контроллере:

App.EditBookController = Ember.ObjectController.extend({
  enterEditing: function() {
    this.transaction = App.router.get('store').transaction();
    this.transaction.add(this.get('content'));
  },
  updateRecord: function() {
    this.transaction.commit();
    this.transaction = null;
    App.router.transitionTo('books');
  }
});

person Sean O'Hara    schedule 17.10.2012    source источник
comment
Я не знаю точную версию ember-data, которую вы используете, но этот PR github.com /emberjs/data/pull/409 важен. Я также понимаю, что даже не знаю, хорошо ли работает адаптер приспособления после слияния с веткой улучшения отношений...   -  person sly7_7    schedule 18.10.2012


Ответы (1)


Хорошо, вы используете самую последнюю версию ember-data. Это здорово, но я тоже должен поставить себе обновление. С помощью @tchak я могу начать работать:

http://jsfiddle.net/Sly7/2XHZ2/45/

Вы заметите, что я использую App.Book.find() для загрузки фикстур в первый раз и App.Book.all(), который кажется живым массивом, поэтому все обновляется.

Я должен идти дальше, чтобы сделать выбор рабочим.

Хорошо, моя последняя попытка на данный момент... http://jsfiddle.net/Sly7/2XHZ2/57/

ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ Заработало, добавив RESTSerializer в FixtureAdapter. см. http://jsfiddle.net/Sly7/2XHZ2/61/

person sly7_7    schedule 18.10.2012
comment
Спасибо @sly7_7 (и @tchak). Это определенно работает намного лучше сейчас. Да, я использую ember-данные пару дней назад по адресу 9d76749. Единственное, что сейчас связано со скрипкой, это то, что она, похоже, теряет отношения с автором при обновлении. Я продолжу это и снова прокомментирую здесь, когда я заставлю его работать. Ваше здоровье. - person Sean O'Hara; 18.10.2012
comment
с этим это должно работать... jsfiddle.net/Sly7/2XHZ2/61 Когда я выбираю автора, затем нажимаю «Обновить», я вижу, что он работает... Я что-то пропустил? - person sly7_7; 18.10.2012
comment
Ага, сейчас работает. Спасибо. Мне придется копнуть глубже в источник данных ember. Я предполагаю, что документы в README немного устарели. - person Sean O'Hara; 18.10.2012
comment
Действительно... ember-data еще не полностью стабильна, а документы устарели. Не стесняйтесь делать пиар, если можете :) - person sly7_7; 18.10.2012