我已经在 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 有一个“关联”分支 here - 但修改 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 模型中有一个笔记 ID 数组,并带有某种获取/检索接口(interface),但我绝对一无所获。我今天花了相当多的时间试图找出最好的方法来做到这一点,而我所拥有的只是很多挫败感。
最佳答案
Ember-data 最终会到达那里。在那之前,我目前只是改变数组并手动调用所有相应的存储方法来反射(reflect)改变。
关于javascript - 与 EmberJS/Data 关联的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9305403/