【问题标题】:How to set the key value on a Go.js Node to create links如何在 Go.js 节点上设置键值以创建链接
【发布时间】:2019-12-03 19:31:02
【问题描述】:

我正在使用 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 值是一个空字符串。

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

【问题讨论】:

    标签: javascript gojs


    【解决方案1】:

    keys 是模型数据的一个属性,其中模型具有节点数据和链接数据的数组。键并不是节点本身的属性。 node.key 只是为了方便node.data.key

    所以当你写的时候:

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

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

    换句话说,您只能通过模型​​关联这些东西,而不是您正在创建的节点。

    如果您使用模型,您应该在图表上创建节点模板,而不是独立节点,就像您正在做的那样。所以像:

    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' })
    ));
    

    【讨论】:

    • 那么使用 .addNodeData (...) 和节点模板,我如何将该节点的 x,y 值传递到模板中?我不希望我的所有节点都在同一点。在我的模板中,point[0] & point[1] 是变量,而不是静态值。
    • 找到教程视频 - 他们把我整理出来了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多