2014-12-21 5 views
0

Все еще есть большие проблемы с работой с datalabels с высокими диагоналями. Теперь мне нужно показать и спрятать datalabels, нажав на точки. Пробовал это:Highcharts показать/скрыть datalabel выбранной точки

plotOptions: { 
      series: { 
       allowPointSelect : true, 
       point: { 
        events: { 
         select /*click*/: function() { 
          this.options.dataLabels.enabled = !this.options.dataLabels.enabled; 
          this.update(); 
         } 
        } 
       }     
      } 
     } 

Но получите Uncaught TypeError: Cannot set property 'enabled' of undefined.

На уровне PlotOptions есть точечные события, как point.select и point.click, но из примеров, приведенных на highcharts.com. Я не могу получить помощь.

Также я не могу понять, должен ли я работать с точкой или, может быть, с определенной последовательностью через доступ к массиву like series[0].data[1] и т. Д.? Спасибо.

ответ

4

Пройди обновленную информацию в Point.update()method.

  point:{ 
       events:{ 
        click: function(){ 
         // determine toggle state 
         // on first click this.dataLabels is undefined... 
         var e = !this.dataLabels || this.dataLabels.enabled ? false : true; 
         this.update({ 
          dataLabels:{ 
           enabled: e 
          } 
         }); 
        } 
       } 
      } 

Here's an example, который переключает их.

+0

Большое спасибо. Но как я могу сделать его невидимым по умолчанию? Если я устанавливаю dataLabels: {enabled: false}, он не отображает их, даже нажимая на точку (( – Daria

+4

Измените условие на: '! This.dataLabels ||! This.dataLabels.enabled? True: false;' –

+0

@ Steve.B, обновленная скрипка с измененной логикой [здесь] (http://jsfiddle.net/7wLxwfq6/3/) – Mark

Смежные вопросы