什么是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
让我知道,如果你认为,就必须有更多的澄清和我会更新的答案。
节点数据是一个至少具有以下格式的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。
这绝对是一个很好的答案!我自己在文档中以正确的顺序连接点时遇到了困难,但我承认,我正在阅读节点,链接和模型,试图弄清楚我做错了什么,而不是看绑定。我了解文档中节点,形状等的属性,以便我可以滚动。我也很欣赏对关键领域的功能及其行为的肯定,我没有从文档中明确地找出自己的想法。再次感谢! – ThePartyTurtle
此外,如果您想使用http://gojs.net/latest/api/symbols/Model.html#toJson写出模型,则对属性及其值有一些限制 - 它们需要是JSON-可序列化,无循环参考。 –