如何将数据从api传递到gojs TreeModel

时间:2019-02-02 09:42:06

标签: javascript arrays gojs

我不愿意使用GOJS和TreeModel显示链接。我能够创建节点,但不能创建链接。

我认为这与GOJS使用数据数组而不是json有关。

    var $ = go.GraphObject.make;
    var myDiagram =
        $(go.Diagram, "myDiagramDiv",
            {
                "undoManager.isEnabled": true, // enable Ctrl-Z to undo and Ctrl-Y to redo
                layout: $(go.TreeLayout, // specify a Diagram.layout that arranges trees
                    { angle: 90, layerSpacing: 35 })
            });

    // the template we defined earlier
    myDiagram.nodeTemplate =
        $(go.Node, "Horizontal",
            { background: "#44CCFF" },
            $(go.Picture,
                { margin: 10, width: 50, height: 50, background: "red" },
                new go.Binding("source")),
            $(go.TextBlock, "Default Text",
                { margin: 12, stroke: "white", font: "bold 16px sans-serif" },
                new go.Binding("text", "name"))
        );

    var model = $(go.TreeModel);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", "/api/Employees/", false);
    xmlhttp.send();
    var nodeArray = JSON.parse(xmlhttp.responseText);
    //model = nodeArray;
        myDiagram.model.nodeDataArray = nodeArray;
    //myDiagram.model = model;

1 个答案:

答案 0 :(得分:0)

如果您检查控制台窗口,则会看到此错误消息:

Error: ParentKey value for node data [object Object] is not a number or a string: null

那是因为您设置了:

"parent": null

在您的一个节点数据对象中。我建议您删除该属性。

我还建议您使用go-debug.js库而不是go.js库,因为该库的Debug版本将检测并警告您比常规库更多的问题。 / p>