オブザーバブルを 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 があるため、値を取得するだけでは少し繰り返しになります。
アップデート:
これまでのところ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 を持っているので、値が観察可能かどうかを確認するために多くのチェックを行う必要があります。少し乱雑に見えます。より良い方法はありますか?