简体   繁体   English

cytoscape.js如何在div中显示节点?

[英]cytoscape.js how to display nodes in div?

I have been trying around with my code for a while but i only get an empty div displayed and i dont know why. 我一直在尝试我的代码一段时间,但是我只显示一个空的div,我不知道为什么。

         var elementsStr = "[";
         for(var i = 0;i < elements.length; i++) {
             var toConCat = "{data:{id:\"node-" + i + "\"}},";
             elementsStr = elementsStr.concat(toConCat);
             if(isEven(i) && i != 0) {
                 console.log(i);
                 toConCat = "{data: {id:\"edge-" + i/2 + "\",source:\"node-" + i-1 + "\",target:\"node-" + i + "\"}},";
                 elementsStr = elementsStr.concat(toConCat);
             }

         }
         var toConCat = "{data:{id:\"edge-" + (elements.length/2) + "\",source:\"node-" + (elements.length-2) + "\",target:\"node-" + (elements.length-1) + "\"}}";
         elementsStr = elementsStr.concat(toConCat);
         elementsStr = elementsStr.concat("]");
         console.log(elementsStr);
        responseDiv.innerHTML = "";
         var cy = cytoscape({
             container: responseDiv,

             style: [
                {
                    selector: 'node',
                    style: {
                        'background-color': '#666',
                        'label': 'data(id)'
                    }   
                },
                {
                    selector: 'edge',
                    style: {
                        'width': 3,
                        'line-color': '#ccc',
                        'target-arrow-color': '#ccc',
                        'target-arrow-shape': 'triangle'
                    }
                }
            ],
            layout: {
                name: 'grid',
                rows: 1
            }

         });
        var eles = cy.add(elementsStr);
        console.log(eles);
     }
 };

elementsStr is elementsStr是

[{data:{id:"node-0"}},{data:{id:"node-1"}},{data:{id:"edge-1",source:"node-0",target:"node-1"}}] [{数据:{ID: “节点-0”}},{数据:{ID: “节点1”}},{数据:{ID: “边缘-1”,来源: “节点-0”,目标: “节点1”}}]

in the end, but nothing is displayed, what am i doing wrong? 最后,但什么也没显示,我在做什么错?

That approach is quite complicated, just stick to the documentation on cy.add() and try building the elements not as a string concatination but like a json file, also, maybe use single quotes for the id: 这种方法非常复杂,只需坚持cy.add()上的文档,然后尝试将元素构建为不是像字符串json而是像json文件那样,还可以对id使用单引号:

var nodes = [];
for (var i = 0; i < elements.length; i++)
    nodes.push({ group: "nodes", data: { id: i });
}
var k = 0;
for (var i = 0; i < elements.length; i+=2)
    nodes.push({ group: "edges", data: { id: "e" + k, source: "n" + i, target: "n" + (i + 1) } });
    k += 1;
}
cy.add(nodes);

In your html file, just add a div with the right id, don't touch it after that, I don't really know why you added the .innerHtml = "", thats not necessary:) 在您的html文件中,只需添加具有正确ID的div,之后不要触摸它,我真的不知道为什么您添加了.innerHtml =“”,那不是必须的:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM