2

我已经在 EmberJS 应用程序上工作了大约一周,并且已经为 EmberJS/Data 编写了我自己的 localStorage 适配器以允许数据持久性。该应用程序是一个小型笔记应用程序。理想情况下,我希望有一个 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)
});

... hasMany 方法创建的 ModelArray 在 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 的最新提交确实包括数组可变性,但它仍然缺乏任何类型的观察 - 适配器在进行更改时不会收到通知,并且不会保存它们。

我想知道:在将此功能添加到 EmberJS/Data 之前,hasMany 关联的最佳替代方案是什么?我一直在研究不同的模式,例如在 Notebook 模型中有一个 note IDs 数组,并带有某种获取/检索接口,但我绝对无处可去。我今天花了很多时间试图找出最好的方法来做到这一点,而我所拥有的只是很多挫败感。

4

1 回答 1

1

Ember-data 最终会到达那里。在那之前,我目前只是对数组进行变异并手动调用所有相应的存储方法来反映变异。

于 2012-02-16T21:36:20.953 回答