jsfiddle链接:click here
这里有两个问题需要解决:
问题1: 单击selection2和选择3工作正常,但单击Selection1并不反映更改。
问题2: 为了返回不同的dataLabel用于不同的选择,我编写了代码,它似乎工作正常但在调试时我发现每次进行选择时,下面的代码执行两次。
formatter: function () {
if(value=="selection3"){
return '<b>'+this.point.name + '<br/>'+ this.point.value + '%</b> '
}else{
return '<b>'+this.point.name + '<br/>'+ this.point.value + '</b> '
}
},
我的问题是这个格式化函数的工作原理以及为什么if条件对每个选择执行两次。
感谢您的帮助。
答案 0 :(得分:4)
根据问题1:
正如@ewolden所提到的
问题一是由初始化中设置的selection1Data引起的,并通过引用
更新
要解决此问题,您可以使用<pollEnrich>
<simple>smb://{{uri}}&fileName=${header.ResultFileName}&delete=true&maxMessagesPerPoll=1</simple>
</pollEnrich>
方法更新数据,setData(data [, redraw] [, animation] [, updatePoints])
设置为updatePoints
(适用于所有系列更改)
false
updatePoints (默认: true )
当更新的数据与现有数据的长度相同时,将更新点而不是替换点。这允许用动画更新并且表现更好。在这种情况下,原始数组不会通过引用传递。设置为false以防止。
还使用$('#selection1').click(function() {
value = "selection1";
chart.series[0].setData(selection1Data, true, {}, false);
});
,而不是setData
..
update
方法比其他一些实用程序方法(如Highcharts.Series #setData或Highcharts.Series #setVisible。)性能更高。
根据问题2:
将为将要提供的每个系列调用函数**[update]**
。在您的示例中,formatter
包含两个系列,导致原因
...每次进行选择时,以下代码执行两次。