This might work for supporting undo/redo of property changes that have been saved in the model data via TwoWay Bindings:
myDiagram.model.undoManager.skipsEvent = function(e) {
if (e !== null && e.model === null) return true;
return go.UndoManager.prototype.skipsEvent.call(this, e);
};
myDiagram.model.addChangedListener(function(e) {
if (e.change === go.ChangedEvent.Transaction &&
(e.propertyName === "FinishedUndo" || e.propertyName === "FinishedRedo")) {
setTimeout(function() {
myDiagram.commit(function(d) {
d.updateAllTargetBindings();
}, null);
}, 1);
}
});
I hope this helps you.