3

主題はそれをすべて言います。配列の要素のプロパティの変化を観察しています:

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

どの要素が追加および削除されているかを正確に知りたいです。いくつかの実験の後、観測関数に 3 つのパラメーターを追加できることがわかりましたが、いずれも追加/削除される要素ではありません。

配列のコピーを保持してから、新しい配列と手動で比較するよりも簡単な解決策はありますか?

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 に答える