2017-09-06 6 views
0

正しく発砲しているサイトスコープインスタンスのboxendイベントを購読していますが、ボックス内にノードがあるかどうかを確認できます。イベントが発生しました。イベントtargetのプロパティは、選択された要素ではなく、単にサイトスコープのインスタンスであるようです。Cytoscape.js - ボックスエンドでノードが選択されているかどうかを検出します。

これは私がやりたいことのようなものです。

this.cy.on('boxend', event => { 

    if (event.nodesSelected()) { 
    // fire off some action 
    } else { 
    console.log('no nodes selected'); 
    } 

}); 

は私がbox/boxselectイベントのnodesSelected = trueを設定し、その後フラグnodesSelected = falseを設定するboxstartを使用し、回避策を考えることができるが、これは理想的ないないようです。

答えて

0

ジェスチャーフロー全体について知りたい場合は、boxも聞く必要があります。ドキュメントから:

ボックス: UIのための一般的

http://js.cytoscape.org/#events/user-input-device-events

boxend

にボックス内の要素でトリガ、それは boxなどのイベントでデバウンスを使用すればよいです。

let boxedNodes = cy.collection(); 

let handleElements = debounce(function(){ 
    // ... 

    boxedNodes = cy.collection(); 
}); 

nodes.on('box', function(evt){ 
    let node = e.target; 

    boxedNodes = boxedNodes.union(node); 

    handleElements(); 
}); 
+0

返信いただきありがとうございますmaxkfranz。私は、この解決策は私の回避策の提案にいくらか類似していると信じていますが、フラグの代わりにデバウンスとコレクションを使用しています。私は1回の選択で1回しか発砲しないイベントを望んでいましたが、これを今受け入れているとマークします。 – Alex

関連する問題