我正在观察像这样的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
将被调用并对记录执行一些操作。如何获得对调用观察者的记录的引用,而不仅仅是整个数组?
答案 0 :(得分:0)
据我所知,没有办法说出来。文档中没有提到如何执行此操作。请参阅here和here。
但它提到了这一点:
注意,每次添加或替换元素时都会调用@ each.property观察者,并且不会使用特定的枚举项调用它。
通常,如果您向观察者功能添加obj
和keyname
参数并调用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尝试一些东西。