Posso implementare Mvvm con Knockout.js. Ma io voglio usarlo con cross browser (FF e Chrome) supportato memoria offline Html 5.Come posso implementare MVVM con archiviazione offline e Knockout.js?
Voglio associare oggetti HTML alla memoria offline.
Posso implementare Mvvm con Knockout.js. Ma io voglio usarlo con cross browser (FF e Chrome) supportato memoria offline Html 5.Come posso implementare MVVM con archiviazione offline e Knockout.js?
Voglio associare oggetti HTML alla memoria offline.
La sua soluzione funziona!
Non l'ho provato, ma c'è un knockout.localStorage
project on GitHub, che sembra essere quello che stai cercando.
Con questo plug-in, si dovrebbe essere in grado di passare un oggetto come secondo argomento, quando si crea l'osservabile, che salva l'osservabile in localStorage.
Dalla documentazione:
var viewModel = {
name: ko.observable('James', {persist: 'name'})
}
ko.applyBindings(viewModel);
È possibile utilizzare una libreria come amplify.js che può serializzare gli oggetti per localStorage (cross browser). Ricade anche ai vecchi strumenti di archiviazione per i browser più vecchi. Innanzitutto, scartare gli osservabili in un oggetto JSON, quindi utilizzare amplify.store per serializzare l'oggetto e memorizzarlo. Quindi puoi estrarlo e mapparlo di nuovo su un oggetto osservabile quando lo vuoi recuperare.
Solo una nota, AmplifyJS non sembra supportare i cookie dalla versione '1.0 beta' in poi [http://amplifyjs.com/changelog/] – jamiebarrow
Ho elaborato una soluzione basata sulla funzione subscribe
di KnockoutJS. Prende un modello e mantiene tutte le proprietà 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();
}
}
};
Controllare http://keestalkstech.com/2014/02/automatic-knockout-model-persistence-offline-with-amplify/ per il codice e l'esempio JSFiddle.
Ho usato questo, funziona molto bene ed è molto pulito e pulito. –