我正在正确触发的scapescape实例上订阅boxend
事件,但是我希望能够确定事件触发时框内是否有任何节点。看来,事件target
属性仅是cytoscape实例,而不是选定的元素。
这是我希望做的事情。
this.cy.on('boxend', event => {
if (event.nodesSelected()) {
// fire off some action
} else {
console.log('no nodes selected');
}
});
我可以想到一种使用
boxstart
设置标志nodesSelected = false
然后在nodesSelected = true
/ box
事件上设置boxselect
的解决方法,但这似乎并不理想。 最佳答案
如果您想了解整个手势流程,还需要收听box
。从文档:
box:在boxend的框内时在元素上触发
http://js.cytoscape.org/#events/user-input-device-events
通常对于UI,只要对box
这样的事件使用反跳就足够了。
let boxedNodes = cy.collection();
let handleElements = debounce(function(){
// ...
boxedNodes = cy.collection();
});
cy.on('box', function( e ){
let node = e.target;
boxedNodes = boxedNodes.union( node );
handleElements();
});
关于javascript - Cytoscape.js-检测是否在Boxend上选择了任何节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46076684/