我已经从事Emberjs申请工作了大约一个星期,并为Emberjs/Data编写了我自己的LocalStorage适配器,以允许数据持久性。该应用程序是一个小笔记应用程序。理想情况下,我想拥有一个笔记本模型,该模型具有许多与之相关的注释模型。

但是,我还没有找到一种方法来导致可变阵列。虽然您可以“实现” 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方法创建的模型片在Emberjs中不可变。看来目前正在处理 - emberjs/data有一个“关联”分支 这里 - 但是修改模型片对本应用程序至关重要,即创建一个新注意事项:

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关联的最佳选择是什么?我一直在研究不同的模式,例如,在笔记本模型中使用了一些带有某种获取/检索接口的音符IDS数组,但是我绝对没有。今天,我花了很大一部分时间试图找出最好的方法,而我所拥有的只是很多挫败感。

有帮助吗?

解决方案

Ember-Data最终将到达那里。在此之前,我目前只是突变数组,并手动调用所有相应的存储方法以反映突变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top