You could add a field named silentUpdate to disable event hendler.
function makeObservable() {
var ob = ko.observable( 0.0 );
ob.subscribe( function (val) {
if(_viewModel.silentUpdate) return;
updateDocument( ko.toJSON( _viewModel ) );
});
return ob;
}
function Transform() {
this.silentUpdate = false;
...
}
function updateView( jsonDocument ){
_viewModel.silentUpdate = true;
var jsonDocument = JSON.parse( jsonDocument );
_viewModel.x( jsonDocument[ "x" ] );
...
_viewModel.__type__( jsonDocument[ "__type__" ] );
_viewModel.silentUpdate = false;
}
I hope it helps.