2

在 ember.js RC5 中,我能够像这样替换 ember 对象数组中的 2 个元素

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

但今天这实际上并没有像 ember 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');
4

2 回答 2

2

为什么不removeAt改用?

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

见这里http://emberjs.com/api/classes/Ember.ArrayController.html#method_removeAt

希望能帮助到你。

于 2013-10-05T15:51:50.890 回答
1

这绝对仍然有效,你确定它是一个 ember 数组吗?或者这是一个 Ember Data RecordArray?

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

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

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

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

我会对此进行测试,但我很确定它将始终与商店中的最新记录保持同步,因此您要么需要将记录复制到不同的数组,要么从商店中删除记录.

更新

看来它仍然可以正常工作(至少在我下面的简单示例中)

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

于 2013-10-05T15:52:02.880 回答