JSFiddle - React, Tailwind, and code Playground
HTML
<input type="button" id="test" value="click me" />
JavaScript
function observable(v){
this.value = v;
this.valueChangedCallback = null;
this.setValue = function(v){
if(this.value != v){
this.value = v;
this.raiseChangedEvent(v);
}
};
this.getValue = function(){
return this.value;
};
this.onChange = function(callback){
this.valueChangedCallback = callback;
};
this.raiseChangedEvent = function(v){
if(this.valueChangedCallback){
this.valueChangedCallback(v);
}
};
}
var obs = new observable(123);
obs.onChange(function(v){
alert("value changed to: " + v);
});
$('#test').click(function(){
alert("clicky");
obs.setValue(456);
});