如何更改 JsPlumb 中的源锚起始位置?

How to change the source anchor starting position in JsPlumb?

我正在使用 jsPlumb 开发应用程序。目前,如果我创建一个形状,它会将形状放在 canvas 的左上角。如果我从源点连接到目标点,它就可以正常工作。

现在,我想在我右键单击的位置创建形状并从源连接到目标。我可以在我右键单击的位置创建形状。

但是,如果我从源拖动到目标,则源锚点不是从源开始的。相反,它从左上角开始。在下面的屏幕截图中,我想从 'Project' 拖动到 'No status' 形状。

另一件事是,如果我拖动 'Project' 形状,端点将从源正确开始。

我想通了。早些时候,代码中的 if 块 (1) 位于代码 (2) 下方。这就是为什么即使形状移动到新位置,锚点的起始位置也没有移动。只要我将 if 块 (1) 移动到 (2) 上方,jsPlumb 就会了解形状的位置以及锚点的起点位置。

因此,如果您要移动形状,则应该在将形状位置告诉 Jsplumb 之前进行。

    if (!!shape.location) { ------------------------------------> 1)
        domEl.style.left = shape.location.left + 'px';
        domEl.style.top = shape.location.top + 'px';
    }

    this.jsPlumbInstance.draggable(domEl, {
        // to contain the shape within the canvas
        // containment: true
    });

    this.jsPlumbInstance.makeSource(domEl, { ----------------------2)
        filter: '.cp',
        anchor: ['AutoDefault'],
        connectorStyle: {
            stroke: '#181919',
            strokeWidth: 2,
            outlineStroke: 'transparent',
            outlineWidth: 4
        }
    });