2017-11-09 2 views
0

タイプスクリプトを角度で使用すると、そのキーを使用して図からノードを選択するにはどうすればよいですか?キーを使用したGoJSアイテム(ノード)選択

新しいノードを作成するときは、ノードをマウスで左クリックして選択する必要があります。すぐに選択する必要があります。

selectItem(item: any) { 
    this.selectedItem = item; 
    this.myDiagram.select(this.myDiagram.findNodeForKey(item.key)); 
    if (this.selectedItem['toPort']) { 
     this.selectedItemtype = 'Link'; 
     this.myDiagram.select(this.myDiagram.findLinkForData(item)); 
    } else { 
     this.selectedItemtype = 'Node'; 
     this.myDiagram.select(this.myDiagram.findNodeForKey(item.key)); 
    } 
    // this.rerender(); 
} 

私はドロップ:私はキー「1」を持つノードを選択するために、私の図に呼び出す必要があります、ここで私が試したものですが、動作するようには思えない機能

ツリーからアイテムを取得し、2つのウィンドウ、ダイアグラムウィンドウ、およびプロパティウィンドウ(ノードのプロパティを編集する)がある場合、ドロップされたアイテムのプロパティを右に編集する必要がありますが、アイテムを編集し、ドロップされたアイテムをクリックするよりも、それらは同じではなく、以前に編集されたアイテムは失われます。

答えて

1

これは基本的には正しいことですが、不必要に複雑です。しかし、それを2回(ノードの場合)行うか、モデル内のリンクデータオブジェクトが同じでない場合はリンクを見つけられない可能性があります。

あなたはGraphLinksModel.linkKeyPropertyを設定することで、あなたのGraphLinksModel内のリンクのためのキーを有効にしている場合、これは十分なはず:

if (item.toPort !== undefined) { 
    myDiagram.select(myDiagram.findPartForKey(item.key)); 
} else { 
    myDiagram.select(myDiagram.findNodeForKey(item.key)); 
} 

あなたは、リンクデータの一意のキーを維持し有効にしていない場合

myDiagram.select(myDiagram.findLinkForData(item)); 

をしかし、それは再びあなたの項目バインに依存します。「リンクのためにあなたがした何をする必要があるでしょうg GraphLinksModel.linkDataArrayの内容と同じオブジェクト参照。同じポインタでない場合は、Diagram.findLinksByExampleに電話して1つを選択します。

プロパティエディタについては、DataInspector、https://gojs.net/latest/extensions/DataInspector.htmlを使用していますか?もしそうなら、それはうまくいくはずです。プロパティを編集するために独自のHTML要素を実装している場合は、間違った参照がある可能性があります。 Diagram.selectionで最初のパートのプロパティを表示/編集する必要があります。ユーザーが別の図(または同じ図)からドラッグしたときにノードの新しいコピーをドロップすると、新しいコピーはDiagram.selectionコレクションになります。

関連する問題