Вы правы, myDiagram.model.removeNodeData(node)
не будет вызывать это событие. Поэтому вам нужен код, который вызывает myDiagram.model.removeNodeData(node)
, чтобы вызвать тот же код, что и событие.
Так что возьмите код и поместите его в свою собственную функцию для более общего использования:
function animateDeletion(part) {
if (!(part instanceof go.Node)) return; // only animate Nodes
var animation = new go.Animation();
var deletePart = part.copy();
animation.add(deletePart, "scale", deletePart.scale, 0.01);
animation.add(deletePart, "angle", deletePart.angle, 360);
animation.addTemporaryPart(deletePart, myDiagram);
animation.start();
}
myDiagram.addDiagramListener('SelectionDeleting', function(e) {
// the DiagramEvent.subject is the collection of Parts about to be deleted
e.subject.each(function(part) {
animateDeletion(part);
});
});
Затем вы можете вызвать этот код перед вызовом removeNodeData:
// ... elsewhere...
animateDeletion(node);
myDiagram.model.removeNodeData(node.data);