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

addNodeDataModelはGoJSの関数です。親ノードのビジュアル ツリーにGraphObject(この場合はプログラムで作成した) を追加するには、親ノードでの呼び出しが必要になります。go.Nodeadd

parentNode.add(childNode)

これは、プログラムで作成したノードにgo.Shapeandを追加するときに使用した関数と同じです。go.TextBlock

ただし、このアプローチで心配することの 1 つは、同じ go.Nodeものへの参照をそれぞれGraphObjectに追加していることですmyDiagram.selection。おそらくやりたいことは、コンストラクターが毎回呼び出され、選択された各要素に同じものではなく個別の s を追加するように、while ループで選択されgo.Nodeた各要素に追加する を構築することです。 go.Node

于 2015-01-15T15:30:11.000 に答える