javascript - 与 EmberJS/Data 关联的替代方案

标签 javascript model-view-controller ember.js local-storage ember-data

我已经在 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/

相关文章:

ios - iOS 中的 Model View Controller 示例

symfony - Symfony 2中的代码分离- Controller vs服务vs实体

ruby-on-rails - ruby rails : Display Number of Search Results Found

pagination - 使用 ember-data RESTAdapter 返回分页数据的正确模式?

javascript - 如何通过 Prop 将禁用属性添加到 react 中的按钮?

Javascript --> iframe 使用 postMessage 方法调整大小

javascript - 在绑定(bind)属性更改时保留模型

javascript - 在 Ember.js 中,同级组件如何相互通信?

javascript - 使用 jQuery 获取下一个节点的值

javascript - 当所有子自定义元素都已连接时如何获得 'connectedCallback'