我有一个createTable函数,它接收一组节点(或节点数组),然后我就能绘制一个表。
我现在正在切换到cytoscape.js,我真的不知道如何正确地监听我的选择事件。
这样做:
cy.on('select', 'node', function(event){
window["selectedNodes"] = cy.$('node:selected');
});
我确实拥有绘制表格所需的所有信息,但我无法在其中调用我的createTable函数,因为它会多次调用我的函数(每个节点选择一次)。 我已经尝试过使用cy.on和cy.once,但没有成功。
这是我的问题:
如何拥有我的选择事件的监听器,获取所有选定的节点并调用(仅一次)我的createTable函数?
我还可以使用以下方法获取所有选定的节点:
cy.elements('node:selected', console.log("my CallBack function"));
但由于它位于事件监听器之外(选择/单击),因此无法正常工作。
请,任何帮助表示赞赏。
谢谢。
答案 0 :(得分:2)
退回你的回调,这样如果多个事件一个接一个地出现,那么它们就会被有效地批处理:
var timeout;
cy.on('select', 'node', function(event){
clearTimeout( timeout );
timeout = setTimeout(function(){
window["selectedNodes"] = cy.$('node:selected');
// and so on...
}, 100); // may have to adjust this val
});