Альтернатива ассоциациям с EmberJS / Data - PullRequest
2 голосов
/ 16 февраля 2012

Я работаю над приложением EmberJS около недели и написал свой собственный адаптер localStorage для EmberJS / Data, чтобы обеспечить сохранность данных.Приложение представляет собой небольшое приложение для создания заметок.В идеале я хотел бы иметь модель Notebook, с которой связано много моделей Note.

Однако я не нашел способа сделать это, что привело бы к изменчивому массиву.Хотя вы можете «реализовать» отношение hasMany ...

Noted.Note = DS.Model.extend({
  title: DS.attr('string'),
  note_text: DS.attr('string'),
});

Noted.Notebook = DS.Model.extend({
  title: DS.attr("string"),
  notes: DS.hasMany(Noted.Note)
});

... ModelArray, созданный методом hasMany, является неизменным в EmberJS.Похоже, что это в настоящее время работает - есть ветвь "ассоциации" EmberJS / Data здесь - но изменение ModelArray критически важно для этого приложения, то есть для создания новой заметки:

var notebook = Noted.store.createResource(Noted.Notebook, {
  title: "Foo Notebook"
});
notebook.get("notes").pushObject(Noted.store.createResource(Noted.Note, {
  title: "Bar Note",
  note_text: "Blah blah blah."
}));
notebook.get("notes").objectAt(0).get("title") //returns undefined

Несмотря на то, что в самой последней фиксации EmberJS / Data есть изменчивость массива, в ней по-прежнему отсутствуют какие-либо наблюдения - адаптер не уведомляется о внесенных изменениях и не сохраняется.

Мне интересно: какова лучшая альтернатива ассоциации hasMany, пока эта способность не будет добавлена ​​в EmberJS / Data?Я изучал различные шаблоны, такие как наличие массива идентификаторов заметок в модели Notebook с неким интерфейсом выборки / извлечения, но я не получил абсолютно ничего.Я потратил довольно много времени сегодня, пытаясь найти лучший способ сделать это, и все, что у меня есть, это большое разочарование.

1 Ответ

1 голос
/ 17 февраля 2012

Ember-данные попадут туда в конце концов.До тех пор я в настоящее время просто изменяю массив и вручную вызываю все соответствующие методы хранилища, чтобы отразить мутацию.

...