Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/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
Javascript Ember.js如何连接两个对象_Javascript_Ember.js - Fatal编程技术网

Javascript Ember.js如何连接两个对象

Javascript Ember.js如何连接两个对象,javascript,ember.js,Javascript,Ember.js,我在余烬中有一个对象(我们称之为现有的): 在命中服务器端请求的回调上,有一个名为result的新响应,它看起来与现有的相同。我需要获取现有的项,并将它们预先添加到新的结果。因此,我有以下几点: var result = { ... }; var existing = this.get('content'); result.items = result.items.concat(existing.items); this.set('content', result); 问题是,

我在余烬中有一个对象(我们称之为现有的
):

在命中服务器端请求的回调上,有一个名为
result
的新响应,它看起来与现有的
相同。我需要获取现有的
,并将它们预先添加到新的
结果
。因此,我有以下几点:

  var result = { ... };
  var existing = this.get('content');
  result.items = result.items.concat(existing.items);
  this.set('content', result);
问题是,在模板中呈现时,它只是显示
结果
中的新项目,而
现有
中的旧项目即使在
项目
中也不会显示。你知道为什么吗


谢谢。

我想问题在于使用
encat
,这在
Ember.Array
()中不受支持,不会触发绑定,因此您的视图不会更新。要合并项目阵列,可以执行以下操作:

var result = { ... };
var existing = this.get('content');
result.items.forEach(item) {
  existing.items.pushObject(item);
}
this.set('content', existing);

如果result.items是一个数组,并且您希望使用javascript concat方法,则可以在现有的.items可枚举项上调用数组,希望它对您有所帮助

var result = { ... };
var existing = this.get('content');
result.items = result.items.concat(existing.get('items').toArray());
this.set('content', result);
如果result.items已经是一个Ember.Enumerable,我将使用pushObjects或addObjects


我知道这是一个老帖子,但由于没有一个被接受的答案,我想我会加入我认为是最好的选择。我最近发现自己需要把一堆
DS.ManyArray
放在一起,这就是我提出的解决方案w/:

var myArrayOfHasManyArrays = ...;
var concatenated = [].concat.apply([], myArrayOfHasManyArrays.invoke('toArray'));

希望这有帮助

我假设这是因为ember已经在父数组对象上有了绑定,当您调用concat时,实际上是在用JavaScript返回一个新的数组对象,而它没有任何与之关联的ember绑定。
var result = { ... };
var existing = this.get('content.items');
result.items = result.get('items').addObjects(existing);
this.set('content', result);
var myArrayOfHasManyArrays = ...;
var concatenated = [].concat.apply([], myArrayOfHasManyArrays.invoke('toArray'));