Protected Observable Example

HTML

<script src="http://knockoutjs.com/downloads/knockout-2.2.1.js"></script>
<script src="https://rawgit.com/benmccormick/5537115/raw/bb19665ff7b68f000d396d689d195022b8bb041f/knockout-revertible.js"></script>
<div>
    There should be 10 guests per table
</div>
<div>
    <span>Num Tables:</span>
    <span data-bind="text:tables">
    </span>
</div>

<div>
    <span>Total Price:</span>
    <span data-bind="text:price">
    </span>
</div>

<div>
    <span>Num Guests:</span>
    <input data-bind="value:guests, valueUpdate: 'afterkeydown'"/>
        
</div>


<button id="ok">OK</button>
<button id="cancel">Cancel</button>

JavaScript

var VM = function(){
    var self = this;
    
    self.guests=ko.revertibleObservable(100);
    
    self.tables=ko.computed( function() {
        return Math.ceil(self.guests()/10);
    });
    
    self.price=ko.computed( function() {
        return "$"+self.tables()*20+".00";
    });
    
    self.commit = function(){
        self.guests.commit();    
    }
    
    self.reset = function(){
        self.guests.reset();    
    }
    
    
      
};

var vm = new VM();

ko.applyBindings(vm);

$("#ok").click(vm.commit);
$("#cancel").click(vm.reset);