我写的是
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);
答案 0 :(得分:0)
addNodeData
是GoJS中Model
的函数。将GraphObject
(在本例中为编程构建的go.Node
)添加到父节点的可视树将涉及在父节点上调用add
。
parentNode.add(childNode)
这与将go.Shape
和go.TextBlock
添加到以编程方式构建的节点时使用的功能相同。
使用这种方法需要担心的一件事是,您要在go.Node
中为每个GraphObject
添加对相同 myDiagram.selection
的引用。您可能想要做的是构建要添加到 in while循环中的每个元素的go.Node
,以便每次调用构造函数并且您正在添加<强烈>不同 go.Node
s到每个选定的元素而不是相同的元素。