2013-04-22 83 views
6

我有一个details: DS.attr('recursive_object')自定义转换(这是一个递归对象)。Ember Data:如何为记录设置isDirty?

可以在适当位置编辑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. 

事情我已经尝试:

结束语record.makeChangeToDetails()will/didSetProperty电话:

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 包括didChangeDatabecameDirty但这些都没有工作。

任何想法?

回答

3

使用1.0.0-beta.7+canary.b45e23ba,这似乎做的工作:

> record.isDirty() 
< false 
> record.send('becomeDirty') 
< undefined 
> record.isDirty() 
< true 
相关问题