高图中树图的选择更改

时间:2017-12-14 12:15:01

标签: javascript performance highcharts treemap

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条件对每个选择执行两次。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

根据问题1:

正如@ewolden所提到的

  

问题一是由初始化中设置的selection1Data引起的,并通过引用

更新

要解决此问题,您可以使用<pollEnrich> <simple>smb://{{uri}}&amp;fileName=${header.ResultFileName}&amp;delete=true&amp;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包含两个系列,导致原因

  

...每次进行选择时,以下代码执行两次。