Javascript D3=>;NVD3.js更新同一页面上的其他图形

Javascript D3=>;NVD3.js更新同一页面上的其他图形,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,我想完成同样的事情,这是正在进行的 单击一个图形时,其他图形将更新 看看这个站点的js,这就是它的神奇之处 chart.stacked.dispatch.on('areaClick.updateExamples', function(e) { setTimeout(function() { mainExample.update(); exampleOne.update(); //exampleTwo.update(); exampleThr

我想完成同样的事情,这是正在进行的

单击一个图形时,其他图形将更新

看看这个站点的js,这就是它的神奇之处

chart.stacked.dispatch.on('areaClick.updateExamples', function(e) {
    setTimeout(function() {
      mainExample.update();
      exampleOne.update();
      //exampleTwo.update();
      exampleThree.update();
    }, 100);
  })
我不明白第一行的“更新示例”是什么。它是一个函数,一个变量。我在代码的其他地方找不到它。我已经将代码复制到我的应用程序中,但我相信这个词是让它工作的关键


有什么想法吗?

更新示例是一个事件名称空间。你可以添加任何你想要的字符串。这是d3.js的一个特性,检查文档

多个事件可以触发事件,对于代码组织,您可能希望命名事件的名称空间。例如,在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.');
});

您可以在此处的实时代码示例中使用此选项:

谢谢。你的答案是我找到的最好的!还请注意,如果您不使用名称空间,或者您使用的名称空间与以前的某个人相同,那么您将替换现有的侦听器。例如,如果您说piechart.pie.dispatch.on('elementover',function(e){return null;}),这将导致piechart的工具提示功能丢失,该功能基于pie对象的elementover事件。因此,使用名称空间也可以避免覆盖现有的事件处理程序。