对于belongsTo,我添加了一个观察者。
例如,在我的我有一个属于该省的人。在我的表格上,我有一个针对各省的 ember 选择。在 Person 模型中,我添加了这个观察者......
provinceChanged: function() {
this.send('becomeDirty');
}.observes('province')
我也依赖 isDirty 来显示/隐藏保存/取消按钮,虽然该观察者在将记录标记为脏方面做得很好,但如果我点击取消,我会进行回滚,但我还需要将记录标记为干净。我在取消操作的 Person 控制器中执行此操作。
cancel: function() {
this.get('model').rollback();
this.set('isEditing', false);
this.get('model').adapterWillCommit();
this.get('model').adapterDidCommit();
}
这一切似乎运作良好。
对于另一个项目的 hasMany,我们在控制器上使用了计算属性。
isThisOrChildrenDirty: function() {
return this.get('isDirty') || this.get('authors').get('isDirty');
}.property('isDirty','authors.@each.isDirty')
然后我们检查 isThisOrChildrenDirty 而不是检查 isDirty。
希望这会有所帮助。