2015-07-19 48 views
3

我正在使用dc.js顯示我儀表板上的某些圖表。我在尋找的是處理每個圖表的點擊事件(例如條形圖點擊事件,餅圖點擊事件和範圍圖表的鼠標向上事件等),並將點擊圖表的歷史保存到數據庫中。通過這種方式,用戶可以在登錄後看到用戶對任何圖表所做的點擊。每個dc.js圖表​​的點擊事件

我檢查了點擊事件的dc.js,但我沒有得到正確的。

任何人都可以幫助我嗎?任何幫助,將不勝感激。

回答

13

這可能是更容易,更樂於助人,觀看了「過濾」事件:

chart.on('filtered.monitor', function(chart, filter) { 
    // report the filter applied 
}); 

我說的容易,因爲你不必擔心看不同的圖表不同的事件。更有幫助,因爲「過濾」會顯示點擊的結果而無需進一步處理,因此您可以顯示實際查看的內容,而不僅僅是點擊的內容。

.monitor在上面的例子中是一個事件命名空間。你可以使用任何你想要的字符串,但是使用一些命名空間來避免踩到同一事件的其他觀察者。

如果您確實需要單擊事件,您可以通過分配給它並調用舊處理程序(yuck)來覆蓋chart.onClick,或者可以使用例如

chart.selectAll('rect.bar').on('click.monitor', ...) 

但是現在您必須查看源代碼,找出每個圖表中要選擇的內容。而這裏的命名空間是必不可少的,因爲你不想幹涉內部事件處理。

+0

感謝您的回覆。但過濾的事件不適用於我,因爲我想顯示的是1.點擊的圖表名稱2.顯示在渲染之前點擊爲圖像的圖表和3.顯示渲染後點擊爲圖像的圖表。所以我需要每個圖表的CLICK事件和RANGE FILTERED EVENT以防止它允許選擇範圍。你能幫忙嗎? –

+0

我不明白爲什麼你不能使用過濾的事件,但無論如何閱讀我的整個答案;我還展示瞭如何觀看點擊事件。 – Gordon