2016-03-22 60 views
0

我試圖創建一個生成隨機數的圖表,並在點擊一個按鈕後更新最大值。Highcharts + AngularJS上的隨機數

這是我的控制器:

$scope.max = 1; 

$scope.randomNumber = function(max,min) { 
    var arr = []; 
    for (var i = 0; i < 60; i++) { 
    arr.push(Math.floor(Math.random()*(max-min+1)+min)); 
    } 
    return arr; 
} 

    $('#chart').highcharts({ 
    series: [{ 
     data: (function() { 
     var data = []; 

     for (var i = 0; i < 60; i++) { 
      data.push({ 
      x: i, 
      y: $scope.randomNumber($scope.max,0)[0] 
      }); 
     } 
     return data; 
     }()) 
    }] 
    }); 

這是應該更新最大值的HTML:

<button ng-click="max = 10">10</button> 
<button ng-click="max = 100">100</button> 
<button ng-click="max = 1000">1000</button> 
<button ng-click="max = 10000">10000</button> 

但是,它不更新最大值。有小費嗎?

這裏有一個Plunker:http://plnkr.co/edit/N0UfORtSjYW5jaPGojXH?p=preview

+0

我覺得你的數據數組是不正確, 'X' 是一個數字,而'Y'是一個數組。我改變'$ scope.randomNumber($ scope.max,0)'爲'$ scope.randomNumber($ scope.max,0)[0]'並生成圖表 – Ronnie

+0

謝謝@Ronnie。它確實生成了圖表。但是,我仍然有另一個問題:當我點擊按鈕時,它不會更新'max'值。 – superjim

回答

3

您需要重新繪製圖表時更改的最大值。

查看plnkr我看着最大值,最大變化時調用繪圖函數。

$scope.draw = function() { 
    $('#chart').highcharts({ 
     series: [{ 
     data: (function() { 
      var data = []; 

      for (var i = 0; i < 60; i++) { 
      data.push({ 
       x: i, 
       y: $scope.randomNumber($scope.max, 0)[0] 
      }); 
      } 
      return data; 
     }()) 
     }] 
    }); 
    } 

    $scope.draw(); 

    $scope.$watch('max', function() { 
    $scope.draw(); 
    }); 

http://plnkr.co/edit/Cp0V46z7UgnRiQsKNrtl?p=preview

+0

當然!謝謝! =) – superjim