【发布时间】:2014-05-07 21:00:07
【问题描述】:
在 JavaScript 中,可以通过以相反的顺序遍历数组并使用splice(index, 1) 删除不需要的元素,从而从数组中删除选定的元素。我试图弄清楚如何在 Ember.js 中做同样的事情(没有 Ember 数据)。
我有一个 ArrayController,相关的 Route 的 model 函数只返回一个 JavaScript 数组。控制器中有一个动作,大致如下:
removeElements: function () {
var i, arr = this.get('content'),
i = arr.length;
while (i) {
i -= 1;
if (arr[i].get('flag')) {
array.replace(i, 1);
}
}
这首先似乎在浏览器中工作。例如,如果我有三个元素并标记第一个和第三个要删除,浏览器将保留显示第二个项目。但是,如果我稍后尝试标记后者,Ember 会抱怨 Uncaught Error: Can't remove an item that has never been added.
我使用了 replace(),因为 Ember 数组没有 splice 方法,但文档还说要使用 replace 必须实现,但我没有不太明白我应该在哪里实现它,我还没有找到任何示例实现来指导我。
我也尝试了各种其他方法,例如removeObject、removeObjects 等等,但没有一个能达到我的要求。
【问题讨论】:
标签: ember.js