Gojs根据nodeTemplateMap绘制templateLinks

Gojs draw templateLinks depending on nodeTemplateMap

我想根据节点模板类型设置不同的链接模板偏移量。

其实我只有一个linkTemplate

dia.linkTemplate =
  $(go.Link,
    // { routing: go.Link.AvoidsNodes },  // link route should avoid nodes
    $(go.Shape, { stroke: 'gray', height: 12 }),
    $(go.TextBlock, 'fiber_manual_record', { font: '20pt Material Icons', stroke: 'gray' },
      {
        segmentIndex: 0, segmentOffset: new go.Point(-9, 8),
        segmentOrientation: go.Link.OrientAlong
      }),
    $(go.TextBlock, 'fiber_manual_record', { font: '15pt Material Icons', stroke: 'gray' },
      {
        segmentIndex: -1, segmentOffset: new go.Point(-1, 8),
        segmentOrientation: go.Link.OrientAlong
      })
  );

但是我有两个 nodeTemplateMap 每个都有不同的形状。

我的问题是链接不会在同一级别开始,具体取决于使用的是哪个节点。

您可以向 link 模板添加绑定,以确定 Link.fromShortLengthLink.toShortLength 取决于它的节点类型。类似于:

$(go.Link,
  new go.Binding("fromShortLength", "fromNode",
    node => node.category === "A" ? 10 : 20),
  . . .
)

显然你需要决定如何使用节点来确定Link.fromShortLength的值来使用。