【问题标题】:Go.JS Diagram Add Javascript Array Object Not Working As Expected No Hash IDGo.JS 图添加 Javascript 数组对象未按预期工作无哈希 ID
【发布时间】:2019-11-05 14:33:20
【问题描述】:

这一定是格式问题,但我的图表不接受来自真实来源的新数据...我注意到 Go.js 没有生成哈希 ID

 function updateGraph(node_list,myDiagram){
        var model = $(go.TreeModel);
        //add some dummy data
          model.nodeDataArray =
        [
         { key: 1, parent: 1, color: "lightblue"},
         { key: 2, parent: 1 , color: "lightblue"},
         { key: 3, parent: 2, color: "lightblue"}
        ];
        //add real data
        for(let id = 1; id < node_list.length; id++){
            model.nodeDataArray.push({key: node_list[id].getNodeID(), parent: node_list[id].getNodeID(),  color: "lightblue"});
        }
        console.log(model.nodeDataArray);
        myDiagram.model = model;
    }

控制台:

0: {key: 1, parent: 1, color: "lightblue", __gohashid: 409}
1: {key: 2, parent: 1, color: "lightblue", __gohashid: 410}
2: {key: 3, parent: 2, color: "lightblue", __gohashid: 411}
3: {key: "step_02_set_incoming_file_permissions", parent: "step_02_set_incoming_file_permissions", color: "lightblue"}
4: {key: "step_025_truncate", parent: "step_025_truncate", color: "lightblue"}
5: {key: "step_03_extract_item_sold_details", parent: "step_03_extract_item_sold_details", color: "lightblue"}


但是,如果我将虚拟数据设置为控制台打印出的硬编码值:

  model.nodeDataArray =
    [
   {key: "step_02_set_incoming_file_permissions", parent: "step_01_starting_email", color: "lightblue"},
   {key: "step_025_truncate", parent: "step_02_set_incoming_file_permissions", color: "lightblue"},
   {key: "step_03_extract_item_sold_details", parent: "step_025_truncate", color: "lightblue"}
    ];

我得到一个带有哈希 id 的输出:

【问题讨论】:

    标签: javascript gojs


    【解决方案1】:

    好的,所以 Go.JS 需要另一个函数来正确添加数据。出于某种原因,您不能只喂它动态对象...按照Go.JS documentation 调用方法addNodeData 修复了图形问题!

     model.addNodeData({key: node_list[id].getNodeID(), parent: node_list[id].getNodeID(),  color: "lightblue"});
     model.addLinkData( { from: node_list[id].getNodeID(), to: node_list[id].getNextNode() } ); //link data
    

    【讨论】:

    • 是的,那是因为 GoJS 不会浪费时间去寻找数据结构之间的差异。因此,您要么需要显式调用 Model.set(在标准组织中使用纯 JavaScript 对象),要么需要实现调用 Model.set 的更智能的属性设置器。跨度>
    • @WalterNorthwoods 谢谢,我最终做了额外的研究。欣赏信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2012-09-03
    • 2021-11-28
    相关资源
    最近更新 更多