如何从1.0替换“替换”ember数组中的项目

时间:2013-10-05 15:02:32

标签: ember.js

在ember.js RC5中我能够替换一个ember对象数组中的2个元素,如此

appointments.replace(starting-index, number-of-elements-to-remove);

但是今天实际上并没有“拼出”元素,因为它实际上已经预先实现了1.0

如果我试图破解它并自己拼接阵列,它什么都不做(也没有错误)

[].concat(appointments).splice(starting-index, number-of-elements-to-remove);

从1.0开始,任何人都知道如何从ember对象列表中删除/替换元素?

更新

ember检查器将模型类型显示为DS.RecordArray(使用最新的ember-data 1.0 beta 3)

我尝试了removeAt,但它仍然无法正常工作

这就是我在我的应用程序中填充数组的方式

var appointments = self.store.all('appointment');

2 个答案:

答案 0 :(得分:2)

为什么不使用removeAt

它具有您需要的相同签名removeAt(start, length)

请参阅此处http://emberjs.com/api/classes/Ember.ArrayController.html#method_removeAt

希望它有所帮助。

答案 1 :(得分:1)

这绝对有用,你确定它是一个余烬阵列吗?或者这是一个Ember Data RecordArray?

http://emberjs.jsbin.com/aKonIk/1/edit

哦,真正的问题是store.all。它是一个过滤的记录数组。 Filtered Record Arrays的一个特殊属性是它们是实时的,这意味着它们保持最新。 Filtered RecordArray:

  

**采用类型和过滤器函数,并返回一个实时RecordArray,它在新记录加载到商店或在本地创建时保持最新。

意味着当您删除记录时,它们可能会被重新插入。

我会对此进行测试,但我很确定它会始终与商店中的最新记录保持同步,因此您需要将记录复制到其他阵列,或删除记录来自商店。

<强>更新

它似乎仍然有效(至少在我下面简单的例子中)

http://emberjs.jsbin.com/uHiCAc/3/edit