3

我有一个 createTable 函数,它接收节点集合(或节点数组),然后我可以绘制一个表。

我现在正在切换到 cytoscape.js,我真的不知道如何正确地让我的 select 事件监听。

这样做:

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"));

但由于它在事件侦听器之外(选择/单击),它不能按我的需要工作。

请,任何帮助表示赞赏。

谢谢你。

4

1 回答 1

3

去抖动你的回调,所以如果多个事件一个接一个地出现,那么它们会被有效地批处理:

 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

 });
于 2013-05-22T20:29:16.033 回答