1

データ内のテキストが特定の文字列と等しい場合にのみ、いくつかの textBlock を作成したいと考えています。そうでない場合 - textBlock を 1 つだけ作成したい。

var template = GO(go.Node, "Auto",{desiredSize: new go.Size(width, height) },     
                  GO(go.Shape, shapeMap.getValue(shape), new go.Binding("fill", "fill")),  
                  ( ???? .includes("[UMS]")) ?
                        GO(go.Panel, "Vertical",
                            GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart1")),
                            GO(go.TextBlock,{text: "[UMS]", font: "7pt serif", click: function(e, obj) {window.open("https://" + obj.part.data.key + ":8090")}}, new go.Binding("stroke", "color")),
                            GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart2")))
                        :
                           GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart1"))

                       );

含まれているかどうかを data.text でテストする方法は?

(関数内で取得する方法を知っています:クリック:関数(e、obj){return obj.part.data.key}

またはそれを宣言する方法 - バインディングを使用して - データはテンプレートごとではなくノードごとになります。しかし、テンプレート内のコードで??)

4

1 に答える 1

1

TextBlockまたはPanelの可視性を data.text にバインドするデータ バインディングを追加できます。そのような例の 1 つを次に示します。

      new go.Binding("visible", "text", function(textvalue) {
        return (textvalue.indexOf("[UMS]") >= 0);
      })

その例では、テキストに が含まれていない場合、"[UMS]"このバインドを持つ GraphObject は非表示になります (表示されず、スペースを占有しません)。

完全な例を次に示します: http://codepen.io/simonsarris/pen/jPzyoa?editors=001

後世のテンプレート全体:

myDiagram.nodeTemplate =
  $(go.Node, "Vertical",
    new go.Binding('background', 'color'),
    $(go.TextBlock,
      { margin: 3 },
      new go.Binding("text", "key")),
    // This textblock will be hidden if the data.text does not contain "three"
    $(go.TextBlock,
      { margin: 3 },
      new go.Binding("text", "text"),
      new go.Binding("visible", "text", function(textvalue) {
        return (textvalue.indexOf('three') >= 0);
      })
     )
  );

データ バインディングと変換関数の詳細については、http: //gojs.net/latest/intro/dataBinding.htmlを参照してください。

于 2015-07-06T14:21:06.500 に答える