0
我正在使用ko.editables插件進行挖空,並且它似乎沒有正確緩存以前的值。有沒有人有這個插件的經驗?來自ko.editables的奇怪行爲
如果我做這樣的事情:
var item = { Name: ko.observable("initial") };
selectedItem = ko.observable(item);
ko.editable(selectedItem);
selectedItem.beginEdit();
selectedItem().Name("second");
selectedItem.rollback();
什麼最終情況是,將selectedItem()名稱仍然是「第二」,即使它應該是「初始」。
我查看了源文件,但我對JavaScript處理變量的方式瞭解不多,不知道我看到的是對還是錯。
我設置ko.editables.js內的下列地點斷點:
result.rollback = function() {
if (inTransaction()) {
result(oldValue); //breakpoint
inTransaction(false);
}
};
我發現的是,屬性oldValue已經拿起觀察到的新的價值,即使提交從來沒有叫。我試過的所有東西看起來都和樣品完全一樣。我錯過了什麼?
更新:
我已經更新了代碼示例。我原來的代碼確實有ko.editable()行,但是感謝Robert.westerland指出了它。它仍然不能用這個額外的線。
不熟悉這個插件,只是想說明的考慮,類似的修改/還原行爲[A簡單的編輯模式的Knockout.js(HTTP討論: //www.knockmeout.net/2013/01/simple-editor-pattern-knockout-js.html) – Origineil
我對ko.editable插件瞭解不多,因爲我從來沒有用過它,但是如果你查看ko.editable頁面上的文檔中的示例(repo着陸頁上顯示的自述文件),好像您的代碼應該是'var item = {Name:ko.observable(「initial」)}; ko.editable(item); item.beginEdit(); item.Name(「second」); item.rollback(); console.log(item.Name());'。使用這裏寫的代碼爲我工作,在一個非常快速的測試。 –