JSFiddle - React, Tailwind, and code Playground

HTML

<input type='text' data-bind='value: computedValue' />
<span data-bind='text: someValue'></span>
<button data-bind='click: updateValue'>Update</button>

JavaScript

var vm = function () {
    var self = this;
    this.someValue = ko.observable('random value');
    this.updateValue = function () {
        self.computedValue('random value ' + Math.round(Math.random()*10), 'system');
    }
    this.computedValue = ko.computed({
        read: function () { return self.someValue(); },
        write: function (newValue, param) {
            if (param === 'system') {
                alert('Updated by function');   
            } else {
                alert('Updated by user input');
            }
            self.someValue(newValue);
        }
    });
}

var vmi = new vm();

vmi.someValue('other random value');

ko.applyBindings(vmi);