ember.js - serializers - Ember Data: ¿cómo configurar es Sucio para un registro?
ember serializers (2)
Tengo algunas pistas de esta otra pregunta: cómo configurar manualmente un estado de objeto para limpiar (guardado) usando Ember-Data
En particular, el poco sobre:
record.get(''stateManager'').transitionTo(''loaded.saved'')
Tengo details: DS.attr(''recursive_object'')
transformación personalizada details: DS.attr(''recursive_object'')
(es un objeto recursivo).
Los details
attr se pueden editar en su lugar, sin que cambie la referencia real del objeto (por ejemplo, se edita un pequeño detalle en los detalles de attr). Esto, sin embargo, no desencadena el registro del disco padre es isDirty
.
¿Cómo puedo notificar manualmente a un registro de DS.Model que se ha actualizado?
Definición del modelo:
App.MyRecord = DS.Model.extend
details: DS.attr "recursive object"
Edición de 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.
Cosas que he intentado:
Envolviendo record.makeChangeToDetails()
con llamadas will/didSetProperty
:
record.send ''willSetProperty'', name: ''details''
record.makeChangeToDetails()
record.send ''didSetProperty'', name: ''details''
Llamar a notifyPropertyChange
record.notifyPropertyChange ''details''
Llamando a un set
y pasando el mismo objeto
record.makeChangeToDetails()
record.set ''details'', record.get(''details'')
También he intentado enviar varios otros eventos de DS.model states desde aquí: https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js incluyendo didChangeData
, becameDirty
pero ninguno de estos funcionó.
¿Algunas ideas?
Usando 1.0.0-beta.7+canary.b45e23ba
, parece hacer el trabajo:
> record.isDirty()
< false
> record.send(''becomeDirty'')
< undefined
> record.isDirty()
< true