2015-10-04 39 views
0

我最近遇到了一個問題,因爲我認爲這將是相當容易解決,但遇到問題。Knockout - 複製一個observableArray而不跟蹤其下降

我正在使用Knockout和MVC,其中我有一個表單,用戶可以輸入數據,他們可以選擇是否提交他們所做的或取消的更改。

問題出現在他們想要取消時,所做的更改仍然會發生變化,因爲它會自動綁定到可觀察對象。我想要做的是在改變之前恢復到舊模式。

me.contactEditCancel = function() { 
     me.Contact= oldContact; 
    } 

其中在編輯表單打開時分配了oldContact。

我不能讓它失去它的依賴跟蹤......任何想法該怎麼辦?要複製observableArray而不進行跟蹤,所以我不必重新加載整個頁面以恢復舊模型。

希望我的問題很清楚,感謝任何幫助!

+0

帶有一些代碼和綁定的[jsfiddle](http://jsfiddle.net)將有所幫助。 – Dandy

+0

新值應綁定到單獨的變量,然後在提交時複製。 –

+0

我正在與ko.mapping.FromJS合作,所以它只是模型/對象綁定,我不知何故需要將創建的變量綁定到模型? 有什麼想法? – Marcus

回答

0

您需要使用原始值和編輯值,這是原始值的副本。當用戶提交時,您保存編輯值。如果他們取消,則顯示原始值。

我不知道你的用戶界面模式,但我經常有一個數據網格與編輯按鈕。點擊一個,然後在彈出窗口中編輯該項目。這大致是我用來管理的模式:

self.itemInEdit = ko.observable(null); 
self.edit = function(item) { 
    self.itemInEdit(new MyViewModel(ko.toJS(item))); 
}; 
self.cancel = function() { 
    self.itemInEdit(null); 
}; 
self.submit = function() { 
    // Save self.itemInEdit 
};