如何在 Go.js 节点上设置键值以创建链接



我正在使用Go.js创建一个用户可以在上面画直线的画布。从文档中,我已经能够创建节点。节点创建代码如下所示:

const node = this.goMake(go.Node, 'Horizontal',
{ position: new go.Point(point[0], point[1]) },  // set the Node.position
this.goMake(go.Shape, 'Circle', { width: 10, height: 10, fill: 'lightblue' })
);

根据我对文档的理解,为了在两个节点之间创建一条线(非定向链接(,我需要使用它们的key值,如下所示:

this.myDiagram.model.addLinkData({ from: node1.key, to: node2.key });

注销节点时,我看到key值是一个空字符串。

问:使用上面的第一个代码段创建节点时,如何注入键值,以便第二个代码段正确链接两者?为所有点创建唯一值不是问题,我只是无法弄清楚如何将唯一值附加到节点的key属性。

键是模型数据的属性,其中模型具有节点数据和链接数据的数组。键不完全是节点本身的属性。node.key只是方便node.data.key.

所以当你写:

myDiagram.model.addNodeData( { key: 'a' });

它正在制作myDiagram.nodeTemplate的副本,并为该节点分配{ key: 'a' }node.data,以便'a'节点的key

换句话说,您只能通过模型来关联这些内容,而不能通过您正在创建的节点来关联这些内容。

如果使用模型,则应在关系图上创建节点模板,而不是像您正在执行的那样创建独立节点。所以像这样:

myDiagram.nodeTemplate = this.goMake(go.Node, 'Horizontal',
{ position: new go.Point(point[0], point[1]) },  // set the Node.position
this.goMake(go.Shape, 'Circle', { width: 10, height: 10, fill: 'lightblue' })
);

或者,如果您有多个模板:

myDiagram.nodeTemplateMap.add('newTemplate', this.goMake(go.Node, 'Horizontal',
{ position: new go.Point(point[0], point[1]) },  // set the Node.position
this.goMake(go.Shape, 'Circle', { width: 10, height: 10, fill: 'lightblue' })
));

最新更新