我现在对 Ember Data 的主要问题是,当我更改关系(hasMany 或belongsTo)时,父级不会变脏。
我需要这个,因为:
isDirty
显示保存/取消按钮的属性 此外,当我回滚父级时,只有belongsTo 关系被恢复。 hasMany 模型保持不变。
我找到了 this issue说的是
dirtyRecordsForHasManyChange
钩,但这似乎不存在于 Ember Data v1(v1.0.0-beta.3,这是我正在使用的)。我怎样才能做到这一点?
谢谢。
最佳答案
对于belongsTo,我添加了一个观察者。
例如,在我的人中,我有一个属于省的人。在我的表格上,我有一个针对各省的 ember 选择。在 Person 模型中,我添加了这个观察者...
provinceChanged: function() {
this.send('becomeDirty');
}.observes('province')
我也依赖 isDirty 来显示/隐藏保存/取消按钮,虽然该观察者在将记录标记为脏记录方面做得很好,但如果我点击取消,我会进行回滚,但我也需要将记录标记为干净。我在取消操作的 Person Controller 中执行此操作。
cancel: function() {
this.get('model').rollback();
this.set('isEditing', false);
this.get('model').adapterWillCommit();
this.get('model').adapterDidCommit();
}
这一切似乎运作良好。
对于另一个项目中的 hasMany,我们在 Controller 上使用了计算属性。
isThisOrChildrenDirty: function() {
return this.get('isDirty') || this.get('authors').get('isDirty');
}.property('isDirty','authors.@each.isDirty')
然后我们检查 isThisOrChildrenDirty 而不是检查 isDirty。
希望这有帮助。
关于ember.js - 当我更改 Ember-Data 中的 hasMany/belongsTo 关系时,如何使父级变脏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19998523/