使用 mxGraph 版本 1.10.1.1
该图包含一个组和组外的一个顶点。基于顶点的属性,我将如何阻止用户将该节点拖入组中?
收听 mxEvent.CELLS_MOVED 似乎没有帮助,因为该事件没有应用于图表并且目标单元格还没有父组信息。我想除非事件被消耗掉。
是否有一种简单的方法可以防止移动完成,或者有没有一种方法可以在满足条件后回滚事务?
我使用的当前实现是mxGraphHandler.prototype.mouseUp
在调用之前覆盖并检查目标和单元格moveCells
。它目前有效,但不是理想的解决方案。
mxGraphHandler.prototype.mouseUp = function(sender, me) {
var hasRestricted = false;
if (!me.isConsumed()) {
var graph = this.graph;
...
if (graph.isSplitEnabled() && graph.isSplitTarget(target, this.cells, me.getEvent())) {
graph.splitEdge(target, this.cells, null, dx, dy);
} else {
// Check if this.target is a group and if this.cells contain the restricted cells
if (this.target.getAttribute('type') !== 'relevantType' || this.cells.indexOf('restrictedVertexType') === -1) {
this.moveCells(this.cells, dx, dy, clone, this.target, me.getEvent());
}
...
};