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);