我正在尝试设置gojs图模型的nodeKeyProperty
。以下代码是我想要做的 -
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gojs/1.6.7/go-debug.js"></script>
</head>
<body>
<div id="myDiagramDiv" style="width:400px; height:150px; background-color: #DAE4E4;"></div>
<script type="text/javascript">
var $ = go.GraphObject.make;
var diagram = $(go.Diagram, "myDiagramDiv");
diagram.nodeTemplate = $(go.Node, "Auto",
$(go.Shape, "RoundedRectangle", new go.Binding("fill", "fill").makeTwoWay()),
$(go.TextBlock, new go.Binding("text", "id"))
);
diagram.model = new go.GraphLinksModel();
diagram.model.nodeKeyProperty = function(nodeData, id) {
// id && (nodeData.id = id);// enabling it will fix the issue.
return nodeData.id;
};
diagram.model.addNodeData({
fill:"green"
})
</script>
</body>
</html>
但我无法成功运行此代码。我收到以下错误 -
Uncaught Error: Model.makeNodeDataKeyUnique failed on [object Object]. Data not added to Model.
at Object.k (go-debug.js:31)
at X.L.addNodeData.L.vl (go-debug.js:356)
at index-copy.html:26
我尝试调试gojs代码并以某种方式弄清楚将id && (nodeData.id = id)
添加到nodeKeyProperty
实现可以解决问题。但是,从docs我不清楚是否需要它。我做错了吗?
先谢谢。
答案 0 :(得分:2)
Model.nodeKeyProperty 的文档不完整。如果值是函数,则应该使用一个或两个参数。如果只有一个参数,则应返回该数据对象的数字或字符串键值。如果有两个参数,则应修改该Object以使用第二个参数值作为其键值。
但是你不应该只将Model.nodeKeyProperty设置为“id”吗?