2014-01-13 69 views
3

當前正在使用部分應用程序,需要從內容中克隆元素,然後修改克隆元素並保存回模型。我在保存克隆元素時遇到問題,不得不用克隆的元素替換舊的元素。什麼我目前做的是改變舊項目的所有屬性,像這樣(它的工作原理):如何替換陣列控制器中的內容元素

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的數組。

+0

LOLZ,問題是我需要一個數組來傳遞在replaceContent – Jaime

回答

1

修復:需要將數組發送到replaceContent方法。因此,將選定的職位更改爲[SelectedEmployment]。另外,將0更改爲1,否則,內容將最終具有元素和克隆元素。

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

第三varaible我認爲第二PARAM應該是'this.content.length',不是嗎? – aceofspades

+0

是的。這是您想要從內容中刪除的項目數量。 http://emberjs.com/api/classes/Ember.ArrayController.html#method_replaceContent – Jaime

相關問題