2017-08-05 57 views
1

我有一個樣條曲線圖,它比較今天的頁面瀏覽量和一臺主機的最近7天的頁面瀏覽量。在瀏覽器中加載圖形後,會使用下面給出的加載方法定期添加新點。事情在這裏工作得很好。如何在setInterval方法內更新HighChart系列

可以選擇使用複選框添加或刪除新主機。

我的問題: 當用戶選擇新主機時,圖形與舊主機成功地填充。 但圖形沒有得到定期更新的新主機。 根據下面的代碼HighChart系列在setInterval方法中傳遞,該方法未針對新主機進行更新。

我的問題: 如何更新系列,以便我可以爲新添加的主機定期添加點。

請指導我... 在此先感謝。

events : { 
        load : function() { 
         var thisseries = this.series; 
         setInterval(function() { 
         var data = getMegaGraphPointsForFiveMin(); 
         var index = 0; 
         for(var i = 0 ; i< data.length; i++){ 
          var series = thisseries[index]; 
          var innerData = data[i]; 
          var dataArray = innerData.dataArrayP; 
          var xval = dataArray[0].x; 
          var yval = dataArray[0].y; 
          series.addPoint([xval, yval], true, false); 
          index = index + 2; 
         } 
         }, 60*1000);// add new page view count in every min dynamically. 
        } 
       } 
      }, 
+0

您是否嘗試過在加載函數中添加[redraw](http://api.highcharts.com/highcharts/Chart.redraw)? – ewolden

+0

這是很難想象如何所有這些工作沒有任何例子。你可以嘗試向我們提供這樣的嗎? getMegaGraphPointsForFiveMin()函數的作用是什麼? –

回答

1

我已經找到了上述問題的答案。

問題:每次用戶選擇任何主機的複選框時都會調用加載方法。 而在Load方法中,我們使用setInterval()方法,並且它在後臺連續給定間隔後運行。

解決方案:因此,在每一個負載方法調用我清除舊的setInterval如下所示。 它可以幫助一些初學者和我一樣

查找下面

//全局變量

VAR myTimervar代碼;

events : { 
       load : function() { 
        var thisseries = this.series; 
        if(myTimervar){ 
         window.clearInterval(myTimervar); 
        } 
        myTimervar = setInterval(function() { 
         var data = getMegaGraphPointsForFiveMin(); 
         var index = 0; 
         for (var i = 0; i < data.length; i++) { 
          var series = thisseries[index]; 
          var innerData = data[i]; 
          var dataArray = innerData.dataArrayP; 
          var xval = dataArray[0].x; 
          var yval = dataArray[0].y; 
          series.addPoint([ xval, yval ], true, false); 
          index = index + 2; 
         } 
        }, 300 * 1000);// add new page view count in every 5 min 
            // dynamically. 
       } 
      }