1

我写成

function attachlink() {
var url = "https://www.google.co.in";
var diagram = myContextMenu.diagram;
var node = new go.Node(go.Panel.Auto);
var shape = new go.Shape();
shape.figure = "RoundedRectangle";
shape.fill = "lightblue";
node.add(shape);
var textblock = new go.TextBlock();
textblock.text = "Hello!";
textblock.margin = 5;
textblock.cursor = "pointer";
textblock.click = function (e, obj) { window.open(url) };
node.add(textblock);
//diagram.add(node);
//var diagram = myContextMenu.diagram;
var it = diagram.selection.iterator;
while (it.next()) {
    var part = it.value;
    if (part instanceof go.Node) {
       part.addNodeData(node);
    }
}
diagram.commitTransaction("color nodes");
}

我在这部分代码中遇到问题

 while (it.next()) {
    var part = it.value;
    if (part instanceof go.Node) {
       part.addNodeData(node);
    }
}

我认为这行代码没有将节点附加到当前选定的节点

 part.addNodeData(node);
4

1 回答 1

0

addNodeDataModelGoJS 中的一个函数。向父节点的可视化树添加一个GraphObject(在这种情况下go.Node是您以编程方式构建的)将涉及调用add父节点。

parentNode.add(childNode)

go.Shape这与您将和添加go.TextBlock到您以编程方式构建的节点时使用的功能相同。

不过,使用这种方法要担心的一件事是,您正在为每个in添加对相同 的引用。您可能想要做的是构建要添加到 while 循环中选择的每个元素s ,以便每次调用构造函数,并且您将不同的 s 添加到每个选定的元素而不是同一个元素。go.NodeGraphObjectmyDiagram.selectiongo.Node go.Node

于 2015-01-15T15:30:11.000 回答