2

http://gojs.net/latest/samples/flowchart.htmlに似た 2 つのパネル GoJs 図があります。左パネルからメイン ダイアグラムにオブジェクトをドロップします。テキストなどのドロップされたオブジェクトの属性の値を取得/設定するにはどうすればよいですか? 私は立ち往生しています

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

コンソールには非常に複雑なオブジェクト構造しか表示されませんが、探している値がどこにあるのかわかりません。私の主な目標は、ドロップされたオブジェクトのいくつかの TextBlocks のサイズを変更することです。

4

1 に答える 1

3

まず、コピー元のダイアグラムのモデル データがコピー先のダイアグラムのモデルにコピーされることを理解します。したがって、ソースのノード データ オブジェクトにある列挙可能なプロパティは、宛先で作成されたノードのノード データ オブジェクトに表示される必要があります。

次に、コピーしたノードで「一部の 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を呼び出して特定の Node で特定の TextBlock を見つけることにより、明示的に変更できます。

ページhttp://gojs.net/latest/learn/graphObject.htmlでは、さらに詳しい説明が提供されています。

于 2016-01-12T17:02:48.433 に答える