3

ember データでレコードがダーティな状態になっている理由を知る方法はありますか?つまり、変更された属性と関係は何ですか?

findAll を呼び出した後に isDirty = true になっています。これが発生する理由をデバッグしたいと思います。

どうもありがとう

4

2 に答える 2

7

Ember-Data ベータ 6 以前の時点では、changedAttributes()変更された属性のハッシュとその初期値/現在値を返す関数があります。http://emberjs.com/guides/models/working-with-records/を参照してください。

例えば:

person.changedAttributes(); //=> { isAdmin: [false, true] }

changedAttributes()観察できるプロパティではないことに注意してください。ただし、そうする必要がある場合は、モデルで変更される可能性のあるすべてのプロパティを観察し、changedAttributes()計算されたプロパティ/観察関数内をチェックできます。

(不自然な)例:

checkAttributes: (->
  changed = @get('model').changedAttributes()
  if changed['name'] && Object.keys(changed).length == 1
    # Do something if name is the only changed attribute
).property('name', 'alias', 'description')
于 2014-05-09T21:17:00.500 に答える
4

使用している ember-data のバージョン (および現在、アダプターとして使用しているもの) によって、これは異なる場合があります。バージョン 9 で動作が変更されました。それ以前はrecord.isDirtyBecause('belongsTo')、リレーションシップが変更されたためにレコードがダーティとマークされていた場合、belongsToを返すことができましたtrue。現在、ストアとアダプターの間の責任の一部が変化しているため、これを処理するのはアダプターに任されています。

アダプターでこの情報が必要な場合は、上記dirtyRecordsForAttributeChangeのフックで簿記を行う必要があります。

于 2012-12-19T16:54:29.793 に答える