http://stackoverflow.com/questions/41963416/why-is-knockout-computed-only-called-on-input-checkbox-being-cleared

by jlspake

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <div>
         <input type="checkbox" data-bind="checked: my_checked" />  

        <ol data-bind="foreach:debug_logs">
            <li data-bind="text:log"></li>
        </ol>
    </div>

JavaScript

function getFormattedDate() {
                var date = new Date();
                var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

                return str;
            }

var ViewModel = function (initial_value) {

  var self = this

  self.debug_logs = ko.observableArray()

  self._my_checked = ko.observable(initial_value);
  self.my_checked = ko.computed({
    read: function () {
      self.debug_logs.push({ log: "Reading value to " + self._my_checked() + " " + getFormattedDate() })
      return self._my_checked()
    },
    write: function (value) {
      self.debug_logs.push({ log: "Setting value to " + value + " " + getFormattedDate() })

      self._my_checked(value);
    }
  })
}

            ko.applyBindings(new ViewModel(true))