GoJS - 未捕获错误:[object object]

时间:2017-02-26 22:16:54

标签: javascript gojs

我正在尝试设置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我不清楚是否需要它。我做错了吗?

先谢谢。

1 个答案:

答案 0 :(得分:2)

Model.nodeKeyProperty 的文档不完整。如果值是函数,则应该使用一个或两个参数。如果只有一个参数,则应返回该数据对象的数字或字符串键值。如果有两个参数,则应修改该Object以使用第二个参数值作为其键值。

但是你不应该只将Model.nodeKeyProperty设置为“id”吗?