Simple client storage for view models with AmplifyJS and Knockout
Simple extension for knockout to enable simple storage of observables using AmplifyJs
HTML
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/amplifyjs/1.1.0/amplify.min.js"></script>
<select data-bind="value: selectedValue">
<option value=''>Choose...</option>
<option value='1'>Value 1</option>
<option value='2'>Value 2</option>
</select>
<br/>
You selected: <span data-bind="text: selectedValue"></span>
JavaScript
(function(ko) {
ko.extenders.localStore = function(target, key) {
var value = amplify.store(key) || target();
var result = ko.computed({
read: target,
write: function(newValue) {
amplify.store(key, newValue);
target(newValue);
}
});
result(value);
return result;
};
})(ko);
var viewModel = {
selectedValue: ko.observable().extend({
localStore: 'selected'
})
};
console.log(selectedValue.selectedValue());
ko.applyBindings(viewModel);