在观察@each时知道哪个项目触发事件

时间:2013-08-31 16:51:08

标签: javascript ember.js ember-data

我正在观察像这样的Ember Data RecordArray:

myArray: function() {
  return MyRecord.find();
}.property(),

isDirtyChanged: function() {
  // Do something
}.observes('array.@each.isDirty');

我想对触发事件的特定记录执行一些操作。例如,如果修改了记录2:

MyRecord.find(2).set('my_property','some_value');

isDirtyChanged将被调用并对记录执行一些操作。如何获得对调用观察者的记录的引用,而不仅仅是整个数组?

1 个答案:

答案 0 :(得分:0)

据我所知,没有办法说出来。文档中没有提到如何执行此操作。请参阅herehere

但它提到了这一点:

  

注意,每次添加或替换元素时都会调用@ each.property观察者,并且不会使用特定的枚举项调用它。

通常,如果您向观察者功能添加objkeyname参数并调用obj.get(keyname),您将获得正在观看的对象。但由于此处的密钥名称array.@each.isDirty不起作用。

isDirtyChanged: function(obj, keyname) {
  obj is the targen here the object wacthing the array
  keyname is 'array.@each.isDirty'
  // Do something
}.observes('array.@each.isDirty');

我很想被证明是错的!

这是一个fiddle尝试一些东西。