Когда я сохраняю наблюдаемый файл 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);
Что бы лучший способ работать вокруг этого? Кто-нибудь еще это занялся?
У меня довольно сложный наблюдаемый объект объекта, который содержит наблюдаемые и не наблюдаемые, поэтому просто захват значений будет немного повторяющимся.
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
Я сделаю обновление ... –