2012-11-22 429 views
4
在同一頁上

其他圖我要完成這回事上NVD3 siteD3 => NVD3.js更新

同樣的事情,當你點擊一個圖形中的其他圖表更新。

望着JS的網站,這是什麼呢神奇

chart.stacked.dispatch.on('areaClick.updateExamples', function(e) { 
    setTimeout(function() { 
     mainExample.update(); 
     exampleOne.update(); 
     //exampleTwo.update(); 
     exampleThree.update(); 
    }, 100); 
    }) 

我不明白「updatesExamples」的第一行是什麼。它是一個函數,一個變量。我在代碼中的其他任何地方都找不到它。我已將代碼複製到我的應用程序中,但我相信這個詞是實現它的關鍵。

任何想法?

回答

14

updatesExamples是一個事件命名空間。你可以添加任何你想要的字符串。這是的一項功能d3.js檢查文檔here

多件事情可能會觸發事件,並且對於代碼組織您可能想要命名空間事件。例如,在NVD3如果您希望在傳說點擊可以添加一個事件處理這樣

chart.legend.dispatch.on('legendClick.hi', function(e){ 
    console.log('legend was clicked', 'namespace:', 'hi'); 
}); 

這裏,事件被聽了,是legendClick事情發生和命名空間是hi 。您可以添加具有不同名稱空間的另一個處理程序,該名稱空間在單擊圖例時也會觸發。

chart.legend.dispatch.on('legendClick.there', function(e){ 
    console.log('legend was clicked', 'namespace:', 'there'); 
}); 

命名空間是可選你可能只是傳遞事件的名稱到on方法。

chart.legend.dispatch.on('legendClick', function(e){ 
    console.log('legend was clicked', 'no namespace.'); 
}); 

您可以在這裏住的代碼示例玩這個:http://nvd3.org/livecode/#codemirrorNav

+0

謝謝。很好的答案。 –

+0

謝謝。你的回答是我找到的最好的! – Miquel

+1

另請注意,如果您不使用名稱空間,或者您以前使用的名稱空間與以前使用的名稱空間相同,那麼您將替換現有的偵聽器。因此,如果你舉例說,如果你說piechart.pie.dispatch.on('elementover',function(e){return null;}),這將導致失去餅圖的工具提示功能,這是基於elementover的elementover事件餅圖對象。因此,使用命名空間來避免覆蓋現有的事件處理程序。 –