7

カスタム変換がありdetails: DS.attr('recursive_object')ます (再帰オブジェクトです)。

attr は、実際のオブジェクト参照を変更せずにそのdetails場で編集できます (たとえば、details 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 しかしこれらのどれも機能しませんでした。

何か案は?

4

2 に答える 2

3

この他の質問からいくつかの手がかりを得ました: How to manual set an object state to clean (saved) using ember-data

具体的には、次の点についてです。

record.get('stateManager').transitionTo('loaded.saved')

于 2013-07-08T17:36:32.703 に答える