3

有没有办法知道为什么记录在 ember 数据中处于脏状态,我的意思是已经改变的属性和关系是什么。

调用 findAll 后我有 isDirty = true ,我想调试为什么会发生这种情况。

非常感谢

4

2 回答 2

7

从 Ember-Data beta 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。现在,由于 Stores 和 Adapters 之间的职责发生了一些变化,这由 Adapter 来处理。

如果您的适配器中仍需要此信息,则您有责任在上述挂钩中进行任何dirtyRecordsForAttributeChange记账。

于 2012-12-19T16:54:29.793 回答