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'));