1

使用 mxGraph 版本 1.10.1.1

该图包含一个组和组外的一个顶点。基于顶点的属性,我将如何阻止用户将该节点拖入组中?

收听 mxEvent.CELLS_MOVED 似乎没有帮助,因为该事件没有应用于图表并且目标单元格还没有父组信息。我想除非事件被消耗掉。

是否有一种简单的方法可以防止移动完成,或者有没有一种方法可以在满足条件后回滚事务?

4

1 回答 1

0

我使用的当前实现是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());
        }
    ...
};
于 2013-07-10T18:37:37.233 回答