Как обработать событие отключения в mxgraph? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь добавить две вершины и отключить их, используя этот пример https://jgraph.github.io/mxgraph/javascript/examples/portrefs.html.

В mxGraph имеется прослушиватель для подключения события https://jgraph.github.io/mxgraph/docs/js-api/files/handler/mxConnectionHandler-js.html#mxConnectionHandler .mxEvent.CONNECT

graph.connectionHandler.addListener(mxEvent.CONNECT, function(sender, evt)
{
  var edge = evt.getProperty('cell');
  var source = graph.getModel().getTerminal(edge, true);
  var target = graph.getModel().getTerminal(edge, false);

  var style = graph.getCellStyle(edge);
  var sourcePortId = style[mxConstants.STYLE_SOURCE_PORT];
  var targetPortId = style[mxConstants.STYLE_TARGET_PORT];

  mxLog.show();
  mxLog.debug('connect', edge, source.id, target.id, sourcePortId, targetPortId);
});

Но когда я пытаюсь прослушать событие отключения, https://jgraph.github.io/mxgraph/docs/js-api/files/util/mxEvent-js.html#mxEvent .DISCONNECT , который не работает.

graph.connectionHandler.addListener(mxEvent.DISCONNECT, function(sender, evt)
{
  var edge = evt.getProperty('cell');
  var source = graph.getModel().getTerminal(edge, true);
  var target = graph.getModel().getTerminal(edge, false);

  var style = graph.getCellStyle(edge);
  var sourcePortId = style[mxConstants.STYLE_SOURCE_PORT];
  var targetPortId = style[mxConstants.STYLE_TARGET_PORT];

  mxLog.show();
  mxLog.debug('connect', edge, source.id, target.id, sourcePortId, targetPortId);
});

graph.addListener(mxEvent.DISCONNECT, function(sender, evt)
{
  var edge = evt.getProperty('cell');
  var source = graph.getModel().getTerminal(edge, true);
  var target = graph.getModel().getTerminal(edge, false);

  var style = graph.getCellStyle(edge);
  var sourcePortId = style[mxConstants.STYLE_SOURCE_PORT];
  var targetPortId = style[mxConstants.STYLE_TARGET_PORT];

  mxLog.show();
  mxLog.debug('connect', edge, source.id, target.id, sourcePortId, targetPortId);
});

В обоих случаях я не могу прослушать событие отключения.

1 Ответ

0 голосов
/ 12 февраля 2020

Я не знаю, является ли это разумным способом сделать это, но для меня это работает ... Я не слушаю отключение, а только "ИЗМЕНЕНИЕ" и затем реагирую, если изменение произошло в соединении. .. вот как:

model.addListener(mx.mxEvent.CHANGE, function(sender, evt)
{
  var changes = evt.getProperty('edit').changes;
  for (var i = 0; i < changes.length; i++)
  {
    // Manage any mxChildChange
    if (changes[i].constructor.name ===  "mxChildChange") {
      // This is a deletion case and this is an edge
      if ((changes[i].index === undefined) && (changes[i].child.edge)) {
        // ... Manage the deletion of the changes[i].child
      }
    }
  }
}
...