javascript - 删除节点数据时如何在 GoJS 中动画删除?

标签 javascript gojs

我正在尝试以动画方式删除图中的节点

我正在使用 GoJS 文档中的这段代码: https://gojs.net/latest/intro/animation.html

myDiagram.addDiagramListener('SelectionDeleting', function(e) {
  // the DiagramEvent.subject is the collection of Parts about to be deleted
  e.subject.each(function(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();
  });
});

enter image description here

要删除节点,我使用myDiagram.model.removeNodeData(node),但这不会触发事件。如果我使用 Del 键手动删除节点,它就会起作用。

使用代码删除节点时如何触发事件,例如使用 myDiagram.model.removeNodeData(node) 时?

最佳答案

你是对的,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);

关于javascript - 删除节点数据时如何在 GoJS 中动画删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618565/

相关文章:

javascript - GoJS 中是否可以使组不相交?

GoJS:如何向图表添加背景图像

javascript - 音频 HTML5 自动播放 WebWorks

javascript - Leaflet - 在 map 的某些区域单击即可执行某些操作

javascript - 为什么当我点击 li 时会触发 ul?

javascript - Go.js 复制粘贴不起作用

javascript - goJS背景层不显示

javascript - 退格键在 Safari 和 Chrome 中不起作用

javascript - 如何在 javascript/JQuery 中将 json 对象值清除为空?

javascript - 如何在Gojs中的节点内添加href?