所以我想使用addNodeData(nodedata)和addLinkData(linkdata)在GoJS中动态构建GraphLinksModel。我的问题是我不知道nodedata和linkdata的字段是什么,除了示例代码中的字段。我可以为每个节点和链接构建Node对象和Link对象,但是addNodeData和addLinkData实际上并不想要那些,他们想要" nodedata"和" linkdata"。当我尝试addNodeData(Node)时,我得到一个错误。
以下是addNodeData(nodedata)和addLinkData(linkdata)的说明。正如您所看到的,它只是将参数定义为Object,没有任何提示,在示例中将其定义为其中应该包含的内容。任何方向或解释都将不胜感激。
答案 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
,指定要使用的节点或链接模板,但默认值为""
,无需指定。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
如果您认为应该进一步澄清,请告诉我,我会更新答案。