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