什么是GoJS NodeData和LinkData属性字段?

时间:2016-11-18 17:00:16

标签: javascript typescript gojs

所以我想使用addNodeData(nodedata)和addLinkData(linkdata)在GoJS中动态构建GraphLinksModel。我的问题是我不知道nodedata和linkdata的字段是什么,除了示例代码中的字段。我可以为每个节点和链接构建Node对象和Link对象,但是addNodeData和addLinkData实际上并不想要那些,他们想要" nodedata"和" linkdata"。当我尝试addNodeData(Node)时,我得到一个错误。

以下是addNodeData(nodedata)addLinkData(linkdata)的说明。正如您所看到的,它只是将参数定义为Object,没有任何提示,在示例中将其定义为其中应该包含的内容。任何方向或解释都将不胜感激。

2 个答案:

答案 0 :(得分:2)

节点数据是一种JavaScript对象,其格式最少。根据您使用的对象类型,可以添加其他属性。

{ "id": 1, "text": "TextToDisplay1" }
{ "id": 2, "text": "TextToDisplay2" }

链接数据也是具有以下格式的JavaScript对象

{ "from": 1, "to": 2, "text": "Link above 1 and 2", "curviness": 20 }

此对象的“From”属性将具有From节点的Id值,并且与'to'属性相同,它是'to'节点id。

答案 1 :(得分:1)

没有" all",Node数据可以包含任意内容,但必须包含key。如果未定义key,则GoJS模型将自动分配一个。换句话说,如果您添加{ }作为节点数据并查看它,您会发现它是:

{ __gohashid: 1975, key: -5 }

__gohashid是GoJS的内部信息,不应修改或使用。它们的关键是独特的。

您可以更改uniqueness function of the model,甚至可以change the keyword for key

您可以在Model overview in the API中阅读更多内容。

除了一些内置数据属性外:

  • category,指定要使用的节点或链接模板,但默认值为"",无需指定。
  • TreeModel中还有parent,它指定了父节点的密钥。

除非图表的节点和链接模板具有数据绑定,否则您在模型上找到的任何其他属性都不具有任何意义。例如,此模板有两个数据绑定:

// define a simple Node template
myDiagram.nodeTemplate =
  $(go.Node, "Auto",  // the Shape will go around the TextBlock
    $(go.Shape, "RoundedRectangle", { strokeWidth: 0},
      // Shape.fill is bound to Node.data.color
      new go.Binding("fill", "color")),
    $(go.TextBlock,
      { margin: 8 },  // some room around the text
      // TextBlock.text is bound to Node.data.key
      new go.Binding("text", "key"))
  );

如果节点数据中存在color,则它将在此节点模板的形状中用作Shape.fill

如果节点数据中存在(必须)key,则它将用作TextBlock.text

您可以在此处看到:http://codepen.io/simonsarris/pen/ORwoLA?editors=1010

如果您认为应该进一步澄清,请告诉我,我会更新答案。