Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 使用@each观察数组元素时,我如何知道添加或删除了哪些元素?_Ember.js - Fatal编程技术网

Ember.js 使用@each观察数组元素时,我如何知道添加或删除了哪些元素?

Ember.js 使用@each观察数组元素时,我如何知道添加或删除了哪些元素?,ember.js,Ember.js,主题说明了一切。我正在观察数组元素属性的变化: onChange: function() { // }.observes(content.@each.selected) 我想知道到底哪些元素被添加和删除。经过几次实验,我发现我可以向观测函数添加三个参数,但没有一个是要添加/删除的元素 有没有比保留阵列副本然后手动与新阵列进行比较更简单的解决方案?您可以在内容更改前存储内容,然后与更改后的内容进行比较: willChange: function() { this.contentBefor

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

onChange: function() {
  //
}.observes(content.@each.selected)
我想知道到底哪些元素被添加和删除。经过几次实验,我发现我可以向观测函数添加三个参数,但没有一个是要添加/删除的元素


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

您可以在内容更改前存储内容,然后与更改后的内容进行比较:

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)

是的,这就是我现在正在做的(我在问题中提到了这一点),但我希望会有一个更简单的方法,因为Ember知道哪些元素正在从数组中添加或删除…可能是