如何知道为什么记录在余烬数据中是脏的

时间:2012-12-19 15:48:31

标签: ember.js ember-data

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

调用findAll后我得到isDirty = true,我想调试为什么会这样。

非常感谢

2 个答案:

答案 0 :(得分:6)

从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')

答案 1 :(得分:4)

根据您使用的ember数据版本(现在,您正在使用的适配器),这可能会有所不同。行为changed in version 9。在此之前,您可以说record.isDirtyBecause('belongsTo'),如果记录已被标记为脏,因为belongsTo关系已更改,则会返回true。现在,由于商店和适配器之间的职责发生了一些变化,由适配器来处理这个问题。

  

如果您的适配器中仍然需要此信息,则您有责任在dirtyRecordsForAttributeChange挂钩described above中执行任何簿记。