2013-05-21 52 views
2

我有一個createTable函數接收節點集合(或節點數組),然後我可以繪製一張表。cy.on('select')回調只有一次

我現在正在切換到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")); 

但因爲它是一個事件偵聽器(選擇/點擊)之外,因爲我需要它不工作。

請任何幫助表示讚賞。

謝謝。

回答

1

防抖動回調,所以如果多個事件來一個接一個,那麼他們有效批處理:

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 

});