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>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.objIfTruthy = ko.pureComputed(function() { return !!self.obs() ? 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 = false;
ko.applyBindings(new ViewModel());