2

我有两个类似于http://gojs.net/latest/samples/flowchart.html的面板 GoJs 图。我将对象从左侧面板拖放到主图。如何获取/设置删除对象(如文本等)的属性值?我被困住了

    myDiagram.addDiagramListener("ExternalObjectsDropped",
    function (e) {
        var part = e.subject;
        console.log(e.subject);
    });

控制台只显示非常复杂的对象结构,但我不知道在哪里可以找到我正在搜索的值。我的主要目标是调整放置对象的一些 TextBlocks 的大小。

4

1 回答 1

3

首先要了解源Diagram中的模型数据会被复制到目标Diagram的模型中。因此,无论您在源中的节点数据对象上拥有的任何可枚举属性都应该出现在目标中创建的节点的节点数据对象上。

其次,为什么要在复制的节点中“调整某些 TextBlocks 的大小”?如果它们的TextBlock.text属性是绑定到复制节点数据对象中的属性的数据,那么您真正想要做的是修改模型数据上的这些属性。所以你的“ExternalObjectsDropped”监听器可以这样做:

function(e) {
  // according to the documentation e.subject in this case is
  // the Diagram.selection, a Set of the copied Parts
  e.subject.each(function(node) {
      var model = e.diagram.model;
      model.setDataProperty(node.data, "myProp1", ...);
      model.setDataProperty(node.data, "myProp2", ...);
    });
}

或者,如果您真的想更改GraphObject.desiredSize或TextBlock的任何其他属性,您可以通过为每个 TextBlock 提供一个GraphObject.name并调用Panel.findObject以在特定节点中找到该特定 TextBlock 来明确地做到这一点。

http://gojs.net/latest/learn/graphObject.html页面提供了更多讨论。

于 2016-01-12T17:02:48.433 回答