Ember.js如何连接两个对象

Ember.js how to concat two objects

本文关键字:两个 对象 js 何连接 Ember 连接      更新时间:2023-09-26

我在Ember中有一个对象(我们称之为existing):

 var existing = {
     items: [
        ...
     ],
     ...
 }

在命中服务器端请求的回调中,有一个新的响应称为result,看起来与existing相同。我需要将现有的items添加到新的result中。所以我有以下内容:

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

问题是,当在模板中呈现时,它只是显示来自result的新项目,来自existing的旧项目即使在items中也没有显示。知道为什么吗?

谢谢。

我想问题是使用concat不支持Ember.Array (http://emberjs.com/api/classes/Ember.Array.html)不会触发绑定,因此您的视图未更新。要合并条目数组,您可以执行以下操作:

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

希望有所帮助

items是一个数组,你想使用javascript的concat方法,你可以在现有的数组上调用toArray。可列举的项目。

var result = { ... };
var existing = this.get('content');
result.items = result.items.concat(existing.get('items').toArray());
this.set('content', result);
如果结果

。物品已经是灰烬了。Enumerable我会用pushObjects或addObjects。http://emberjs.com/api/classes/Ember.MutableArray.html method_addObjects

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

我知道这是一个旧的帖子,但由于没有一个公认的答案,我想我应该把我认为是最好的选择。我最近发现自己需要将一堆DS.ManyArray连接在一起,这就是我想到的解决方案w/:

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

希望这对你有帮助!