Knockout demo for issue #2240
by fastfasterfastest
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input data-bind="value: obs">
<p>IsTruthy: <!--ko text:isTruthy--><!--/ko--></p>
<p>Log:</p>
<ul data-bind="foreach: log">
<li data-bind="text: $data"></li>
</ul>
JavaScript
function ViewModel() {
var self = this;
var someObject = { x: 1 };
self.obs = ko.observable('xxx');
self.isTruthy = ko.pureComputed(function() {return !!self.obs();});
self.objIfTruthy = ko.pureComputed(function() { return self.isTruthy() ? someObject : null;});
self.objIfTruthy.equalityComparer = function(a, b){ return (a===b) || ko.observable.fn.equalityComparer(a, b); }
self.log = ko.observableArray();
self.objIfTruthy.subscribe(function(value) {
self.log.push(ko.toJSON(value));
});
};
ko.options.deferUpdates = true;
ko.applyBindings(new ViewModel());