【发布时间】:2013-04-16 00:24:46
【问题描述】:
我有一个details: DS.attr('recursive_object') 自定义转换(它是一个递归对象)。
details attr 可以在原地编辑,而实际对象引用不发生更改(例如,编辑细节 attr 上的子细节)。但是,这不会触发父记录的 isDirty 标志。
如何手动通知 DS.Model 记录已更新?
模型定义:
App.MyRecord = DS.Model.extend
details: DS.attr "recursive object"
编辑details
# record is an instance of App.MyRecord
# makes a change to the record's details attr
record.makeChangeToDetails()
record.get('isDirty') # still false because Ember doesn't know that a sub-detail changed.
我尝试过的事情:
用will/didSetProperty 调用包装record.makeChangeToDetails():
record.send 'willSetProperty', name: 'details'
record.makeChangeToDetails()
record.send 'didSetProperty', name: 'details'
致电notifyPropertyChange
record.notifyPropertyChange 'details'
调用set 并将同一个对象传递给它
record.makeChangeToDetails()
record.set 'details', record.get('details')
我也尝试过从这里发送各种其他 DS.model 状态事件:https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js
包括didChangeData、becameDirty,但这些都不起作用。
有什么想法吗?
【问题讨论】:
标签: ember.js ember-data