【发布时间】:2014-05-25 18:09:52
【问题描述】:
我有一个 nvd3 多条形图(但饼图也会出现同样的问题)。
我想在用户启用或禁用系列时保存图例的状态,方法是在图例中单击它。所以我正在监听 stateChange 事件。
在下面的示例代码中有两个系列。当用户单击 series1 以禁用它时,控制台应记录:
New State: {"disabled":[true,false]}
使用来自服务器的新数据刷新图表后,问题开始出现(由以下代码中的 setInterval 模拟)。第一次刷新后,我总是收到错误事件,即 disabled 属性的值搞砸了。
也许我刷新图表的方式不对?
这里是示例代码:
var initialData = [
{ key: 'series1', values: [
{ x: 0, y: 10},
{ x: 1, y: 44}
]},
{ key: 'series2', values: [
{ x: 0, y: 25},
{ x: 1, y: 11}
]}
];
var chart;
nv.addGraph(function() {
chart = nv.models.multiBarChart()
.delay(0);
d3.select('#chart1 svg')
.datum(initialData)
.call(chart);
nv.utils.windowResize(chart.update);
chart.dispatch.on('stateChange', function(e) {
nv.log('New State:', JSON.stringify(e));
});
setInterval(function ()
{
var newDataFromServer = [
{ key: 'series1', values: [
{ x: 0, y: Math.floor((Math.random()*100)+1)},
{ x: 1, y: Math.floor((Math.random()*100)+1)}
]},
{ key: 'series2', values: [
{ x: 0, y: Math.floor((Math.random()*100)+1)},
{ x: 1, y: Math.floor((Math.random()*100)+1)}
]}
];
d3.select('#chart1 svg')
.datum(newDataFromServer)
.call(chart);
nv.utils.windowResize(chart.update);
}, 5000);
return chart;
});
【问题讨论】:
标签: javascript d3.js charts nvd3.js