我面临着dimple.js的一个问题。我创建了一个堆栈图,并且希望将click事件绑定到该图的每个图例上。如果重新加载页面,那么它可以正常工作,但是当我通过函数调用更改图表数据时,其更改图表内容的效果很好,但是图例单击功能不再起作用。 请帮助摆脱这种情况。
注意:我不想使用Jquery点击处理程序功能。我使用了酒窝Js选择器。下面是我使用过的代码,我也附加了小提琴链接。 Fiddle Link
var svg = dimple.newSvg("#chartContainer", 590, 400);
var data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) },
{ Animal: "Rat", Value: (Math.random() * 1000000) },
{ Animal: "Cow", Value: (Math.random() * 1000000) }
];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 510, 305)
var x = myChart.addCategoryAxis("x", "Animal");
x.addOrderRule(["Cats", "Dogs", "Mice"]);
myChart.addMeasureAxis("y", "Value");
myChart.addSeries("Animal", dimple.plot.bar);
myChart.addLegend(30, 100, 60, 300, "left");
myChart.draw();
svg.selectAll("rect").on("click",function(){
console.log("Hello");
});
//svg.selectAll("g rect.legendKey").on("click",function(){
// console.log("Hello");
//});
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
});
答案 0 :(得分:0)
在按钮单击处理程序中,您必须将图例单击处理程序绑定到myChart.draw(1000);
function legendClick(){
console.log("Hello");
}
d3.select("#btn").on("click", function() {
myChart.data = [
{ Animal: "Cats", Value: (Math.random() * 1000000) },
{ Animal: "Dogs", Value: (Math.random() * 1000000) },
{ Animal: "Mice", Value: (Math.random() * 1000000) }
];
myChart.draw(1000);
svg.selectAll(".legendKey").on("click", legendClick);
});