2016-08-01 13 views
1

so habe ich ein interessantes Problem.Wie Highcharts Tooltip Formatierung Funktion von außerhalb der Config-Objekt aufrufen?

Hier ist, wo die Forma Funktion innerhalb des Diagramms Config Objekts ist:

In HighCharts-Controller

vm.config = { 
    options: { 
     .... 
     chart: { 
      .... 
     }, 
     navigator: { 
      .... 
     }, 
     tooltip: { 
      shared: true, 
      useHTML: true, 
      backgroundColor: null, 
      borderWidth: 0, 
      shadow: false, 
      formatter: function(tooltipObj) { 
       return formatTooltip(tooltipObj, this.points); 
      } 
     }, 
     .... 

Ich würde gerne in der Lage sein, die formatTooltip Funktion von einem anderen Ort zu rufen in meinem App Wie auch immer, 1) Wie mache ich das? und 2) Wie gebe ich die tooltipObj weiter?

Zum Beispiel Innenseite meiner alertFactory mag ich das Mouseover-Ereignis, das passiert, wenn der Benutzer eine plotBand schwebt über, mehr Informationen in die Tooltip senden:

In AlertsFactory

var formatPlotBand = _.curry((color, alert) => { 
    return { 
     color : color, 
     from : alert.start_epoch * 1000, 
     to : alert.end_epoch * 1000, 
     id :'alert-plotband', 
     events: { 
      mouseover: function (e) { 
       /* 
        Somehow from here call the formatTooltip function 
        in the highCharts Controller. 
       */ 
      }, 
      mouseout: function (e) { 
       .... 
+0

Können Sie zeigen, wie 'formatTooltip()' Methode aussieht? Gibt diese Methode nur einen neuen Wert für einen Formatierer zurück? Oder tut es auch etwas anderes? Im ersten Fall erhalten Sie nur eine Zeichenfolge und sonst nichts: Sie aktualisiert den Tooltip nicht (da der Formatierer nicht aufgerufen wird). Ich denke 'chart.tooltip.refresh ([Punkt, Punkt, Punkt]);' (nicht Teil der API) ist ein Weg zu gehen, aber es hängt davon ab, was Sie erreichen wollen. –

Antwort

0
var formatPlotBand = _.curry((color, alert) => { 
return { 
    color : color, 
    from : alert.start_epoch * 1000, 
    to : alert.end_epoch * 1000, 
    id :'alert-plotband', 
    events: { 
     mouseover: function (e) { 
      vm.config.options.tooltip.formatter(tooltipObj); 
      chart.tooltip.refresh([chart.series[0].points[i]]) 
     }, 
     mouseout: function (e) { 
      .... 

Ich weiß nicht, ob vm ist, was Sie Ihr Diagramm aufrufen, also ersetzen Sie chart im Code mit dem Variablennamen, den Sie verwenden.