我希望完成与NVD3 site
相同的事情当您点击一个图表时,其他图表会更新。
查看网站的js,这就是魔术
chart.stacked.dispatch.on('areaClick.updateExamples', function(e) {
setTimeout(function() {
mainExample.update();
exampleOne.update();
//exampleTwo.update();
exampleThree.update();
}, 100);
})
我不明白第一行的'updatesExamples'是什么。它是一个函数,一个变量。我在代码中的任何其他地方都找不到它。我已将代码复制到我的应用程序中,但我相信这个词是让它工作的关键。
有什么想法吗?
答案 0 :(得分: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