当我将一个 observable 保存到 IndexedDB 时,我得到一个 DataCloneError。
例如使用 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,所以仅仅抓取这些值会有点重复。
更新:
到目前为止,我已经尝试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,所以我必须做很多检查以查看值是否可观察,如果是,则打开它们并将它们分开存储。好像有点乱 有没有更好的方法?