3

主题说明了一切。我正在观察数组元素属性的变化:

onChange: function() {
  //
}.observes(content.@each.selected)

我想确切地知道正在添加和删除哪些元素。经过几次实验,我发现我可以在观察函数中添加三个参数,但它们都不是正在添加/删除的元素。

有没有比保留数组副本然后与新数组进行手动比较更简单的解决方案?

4

1 回答 1

0

您可以存储更改前的内容并将其与更改后的内容进行比较:

willChange: function() {
  this.contentBeforeSelectedChange = this.get('content').slice(0);
}.observesBefore('content.@each.selected')

onChange: function() {
  var content = this.get('content');
  var oldContent = this.contentBeforeSelectedChange.toArray();

  var whichChanged = content.find(function(item, index){
     var oldItem = oldContent[index].get('selected');
     return item.get('selected') !== oldItem.get('selected');
  });
}.observes(content.@each.selected)
于 2012-11-01T00:04:15.200 回答