當我保存一個可觀察到IndexedDB,我得到一個DataCloneError。KnockoutJS與IndexedDB - DataCloneError
E.g.使用IDBWrapper:https://github.com/jensarps/IDBWrapper
store = new IDBStore({
storeName: 'myStore',
keyPath: 'Id',
autoIncrement: true,
onStoreReady: loadCallback
});
...
var myObservable = ko.observable("value");
...
store.put(myObservable, refreshCallback);
什麼是解決此問題的最佳方法?有沒有人解決這個問題呢?
我有一個相當複雜的observableArray對象,它包含observables和non-observables,所以只需要抓取這些值會有點重複。
UPDATE:
到目前爲止,我已經試過ko.toJS
這是一個大有希望(http://knockoutjs.com/documentation/json-data.html),但是,因爲我也是用的isDirty標誌與我的一些觀測的(在這裏看到:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html)這個被轉換爲函數所以我需要手動處理...我可以ko.toJSON
這樣整個事情就會被串聯起來,但是與僅僅手動設置每個值相比,將它轉換回可觀察的格式會更難嗎?
所以目前我只是這樣做:
var myObservable = ko.observable("value")
...
var plainValue = myObservable();
store.put(plainValue, refreshCallback);
只有我有不同內容的observableArray,所以我必須做很多檢查,看是否值觀察或沒有,如果這樣的話拆開包裝並分開存放。似乎有點凌亂。有更好的方法嗎?
顯示您用來保存觀察值的代碼。 – ebohlman
我會做一個更新... –