2013-04-22 5 views
6

Mam niestandardową transformację details: DS.attr('recursive_object') (jest to obiekt rekursywny).Ember Data: jak ustawić isDirty na rekord?

Atra details można edytować na miejscu, bez zmiany rzeczywistego obiektu (np. Edytowane są szczegóły szczegółowe na temat szczegółów atr). To jednak nie powoduje flagi isDirty rekordu nadrzędnego.

Jak mogę ręcznie powiadomić rekord DS.Model, że został zaktualizowany?

Definition Model:

App.MyRecord = DS.Model.extend 
    details: DS.attr "recursive object" 

Montaż 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. 

Czego próbowałem:

Owijanie record.makeChangeToDetails() z will/didSetProperty połączeń:

record.send 'willSetProperty', name: 'details' 
record.makeChangeToDetails() 
record.send 'didSetProperty', name: 'details' 

Wywołanie notifyPropertyChange

record.notifyPropertyChange 'details' 

Wywołanie set i przekazując mu ten sam obiekt

record.makeChangeToDetails() 
record.set 'details', record.get('details') 

Próbowałem również wysyłając różne inne DS.model stwierdza wydarzenia stąd: https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js tym didChangeData, becameDirty, ale żaden z nich nie zadziałał.

Wszelkie pomysły?

Odpowiedz

3

Korzystanie 1.0.0-beta.7+canary.b45e23ba, to wydaje się wykonać zadanie:

> record.isDirty() 
< false 
> record.send('becomeDirty') 
< undefined 
> record.isDirty() 
< true