2012-11-22 59 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事件饼图对象。因此,使用命名空间来避免覆盖现有的事件处理程序。 –