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

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

问题描述:

所以我想要使用addNodeData(nodedata)和addLinkData(linkdata)在GoJS中动态构建GraphLinksModel。我的问题是,我不知道nodedata和linkdata的字段,除了示例代码中的字段外。我可以为我的每个节点和链接构建Node对象和Link对象,但addNodeData和addLinkData实际上并不需要这些,他们想要“nodedata”和“linkdata”。当我尝试添加节点数据(节点),然后我得到一个错误。什么是GoJS NodeData和LinkData属性字段?

以下是对addNodeData(nodedata)addLinkData(linkdata)的描述。正如你所看到的,它只是把参数定义为一个对象,没有提示,其他的例子中关于它应该是什么。任何方向或解释将不胜感激。

没有“全部”,节点数据可以任意包含任何内容,但必须包含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

让我知道,如果你认为,就必须有更多的澄清和我会更新的答案。

+0

这绝对是一个很好的答案!我自己在文档中以正确的顺序连接点时遇到了困难,但我承认,我正在阅读节点,链接和模型,试图弄清楚我做错了什么,而不是看绑定。我了解文档中节点,形状等的属性,以便我可以滚动。我也很欣赏对关键领域的功能及其行为的肯定,我没有从文档中明确地找出自己的想法。再次感谢! – ThePartyTurtle

+0

此外,如果您想使用http://gojs.net/latest/api/symbols/Model.html#toJson写出模型,则对属性及其值有一些限制 - 它们需要是JSON-可序列化,无循环参考。 –

节点数据是一个至少具有以下格式的JavaScript对象。可以根据您使用的对象类型添加其他属性。

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

链路数据再次是JavaScript对象与以下格式

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

“发件人”该对象的属性将具有来自节点的Id值和同样是用“至” TEH情况下属性,它是'到'节点ID。