首页 > 解决方案 > 初始布局完成后如何重新链接所有链接

问题描述

我听“INITIAL LAYOUT COMPLETED”事件添加到链接模板选项避免节点出于性能原因。当我设置它时,路线不会被更新和重叠节点。

this._diagram.addDiagramListener('InitialLayoutCompleted', () => {


            this._diagram.linkTemplate =
            $(go.Link,  // defined below
                {
                    routing: go.Link.AvoidsNodes, // go.Link.AvoidsNodes
                },
                new go.Binding('points', 'points').makeTwoWay(),
                $(go.Shape, { stroke: '#fff', strokeWidth: 1 })
            );

            const Pointers: any = this._diagram.model.toJson();

标签: javascriptgojs

解决方案


您不想修改现有模板,也不想替换它们。后者会导致重新创建所有链接。

相反,将Link.routing 保留为不在AvoidsNodes链接模板中。

然后在您的“InitialLayoutCompleted” DiagramEvent侦听器中,您可以执行以下操作:

this._diagram.links.each(l => l.routing = go.Link.AvoidsNodes);

更好的是,你可以只为那些需要它的链接这样做。


推荐阅读