如何替换Array Controller中的content元素

时间:2014-01-13 18:45:55

标签: arrays ember.js controller

目前正在处理需要从内容克隆元素的应用程序的一部分,然后修改克隆元素并保存回模型。我在保存克隆元素时遇到问题,并且必须用克隆元素替换旧项目。我目前正在做的是更改旧项目的所有属性(如果有效):

Blocks.replace = function(item1, item2) {
  for(var k in item2) {
    Ember.set(item1, k, item2[k]);
  }
};

var selectedEmployment = this.get("controllers.employmentDataEntry").get("selectedEmployment");
var modelItem = content.findBy("@id", selectedEmployment["@id"]);
Blocks.replace(modelItem, selectedEmployment);

我正在尝试使用ArrayController replaceContent方法,但在尝试运行以下代码时出现“无效数组长度”错误:

var employmentIndex = content.indexOf(modelItem);
this.replaceContent(employmentIndex, 0, selectedEmployment);

我做错了吗?有更好的方法来更换物品吗? 注意:我使用JSON作为模型。调用replaceContent时使用的ArrayController包含一个长度为2的数组。

1 个答案:

答案 0 :(得分:1)

修复:需要将数组发送到replaceContent方法。因此,将selectedEmployment更改为[SelectedEmployment]。此外,将0更改为1,否则,内容将最终同时包含元素和克隆元素。

this.replaceContent(employmentIndex, 1, [selectedEmployment]);