Я могу реализовать Mvvm с помощью Knockout.js. Но я хочу использовать его с кросс-браузером (FF и Chrome), поддерживаемым автономным хранилищем Html 5.
Я хочу привязать html-объекты к автономному хранилищу.
Я могу реализовать Mvvm с помощью Knockout.js. Но я хочу использовать его с кросс-браузером (FF и Chrome), поддерживаемым автономным хранилищем Html 5.
Я хочу привязать html-объекты к автономному хранилищу.
Я не пробовал, но есть knockout.localStorage
проект на GitHub, похоже, это то, что ты ищешь.
С помощью этого плагина вы должны иметь возможность передавать объект в качестве второго аргумента при создании своего наблюдаемого объекта, который сохраняет наблюдаемый объект в localStorage.
Из документации:
var viewModel = {
name: ko.observable('James', {persist: 'name'})
}
ko.applyBindings(viewModel);
Вы можете использовать библиотеку, такую как amplify.js, которая может сериализовать объекты в localStorage (кросс-браузер). Он также использует старые инструменты хранения для старых браузеров. Сначала разверните наблюдаемые объекты в объект JSON, затем используйте amplify.store для сериализации объекта и его сохранения. Затем вы можете вытащить его обратно и сопоставить с наблюдаемым объектом, когда захотите его получить.
http://amplifyjs.com/api/store/
1.0 beta
[ amplifyjs.com/changelog]
- person jamiebarrow; 23.01.2013
Его решение работает!
Я разработал решение, основанное на функции subscribe
KnockoutJS. Он принимает модель и сохраняет все свойства observable
.
ko.persistChanges = function (vm, prefix) {
if (prefix === undefined) {
prefix = '';
}
for (var n in vm) {
var observable = vm[n];
var key = prefix + n;
if (ko.isObservable(observable) && !ko.isComputed(observable)) {
//track change of observable
ko.trackChange(observable, key);
//force load
observable();
}
}
};
Проверьте http://keestalkstech.com/2014/02/automatic-knockout-model-persistence-offline-with-amplify/ для кода и примера JSFiddle.