【问题标题】:How to add node to parent node (currently selected node) in gojs?如何在gojs中将节点添加到父节点(当前选择的节点)?
【发布时间】:2014-07-31 02:42:48
【问题描述】:

我写成

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);

【问题讨论】:

    标签: javascript gojs


    【解决方案1】:

    addNodeData 是 GoJS 中Model 的一个函数。将GraphObject(在本例中为您以编程方式构建的go.Node)添加到父节点的可视化树将涉及在父节点上调用add。

    parentNode.add(childNode)

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

    使用这种方法需要担心的一点是,您要向myDiagram.selection 中的每个GraphObject 添加对相同 go.Node 的引用。您可能想要做的是构建go.Node,您希望将其添加到while 循环中in 中选择的每个元素,这样每次都会调用构造函数并且您正在添加distinct go.Nodes 到每个选定的元素,而不是同一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      相关资源
      最近更新 更多