2016-04-26 13 views
0

ハイチャートチャートを使用しようとしていて、ライブデータの入力をシミュレートしたいので、ユーザーが「ライブストリームを開始」を押すと"ボタンを押すと、Webページ上でJavaScriptを使用していると思われる機能が起動され、約10秒の遅延を持つ角度コントローラー機能が呼び出されます。10秒ごとにJS関数を呼び出す方法

コントローラーからのjsonデータを照会する方法はhttpリクエストからのものですが、私はデータを照会したいと思っています。だから、私は99と100で始まるWebページ上の関数を持っていて、100-99週間前にクエリに角度関数に変数を渡して、グラフにデータを追加したいと思います。 10秒間待ってから、99-98でゼロになるまで照会してください。

私は一般的にJSにはかなり新しいので、私はどのように起動するのか分からないが、私はsetTimeout関数について読んだ。これについてお伝えするための提案やより良い方法があれば幸いです。

私の現在のHTTPリクエストは次のようになりますし、静的である:

$http({ 
      url: '/api/v1/datapoints', 
      method: 'POST',  
      data: '{"start":"99w-ago","end":"98w-ago","tags":[{"name":"SolarData"}]}' 
     }).then(function(predixTimeSeriesData){ 
       $scope.solarData = predixTimeSeriesData.data.tags[0].results[0].values.map(
      function(curVal, index, arr) { 
       return [curVal[0], curVal[1]]; 
       } 
       ); 
     console.log($scope.solarData); 
     /* 
      I use $scope.solatData in my chart on the html page like 
      <line-series-chart data={{solarData}}></line-series-chart> 
      so this is why I am thinking I need to have the time interval on the view page 
      instead of the controller because i cannot control my chart from there 
     */ 

     }); 
+1

は([ '$のinterval']を使用しますhttps://docs.angularjs.org/api/ng/service/$interval)および/または['$ timeout'](https://docs.angularjs.org/api/ng/service/$timeout)のサービス角度 – devqon

答えて

3

あなたが角度の$intervalサービスを使用することができ、このような何か:

function myController($scope, $http, $interval) { 

    var currentWeek = 99; 
    var fetchInterval; 

    $scope.solatData = []; 

    $scope.fetch = function() { 
     $http.get("someUrl", { 
      params: { 
       week: currentWeek 
      } 
     }).then(function(data){ 
      // This will also update your graph, assuming it is implemented 
      // to watch changes on the data 
      $scope.solatData = $scope.solatData.concat(data); 
      currentWeek++; 
     }); 
    } 

    $scope.start = function() { 
     fetchInterval = $interval($scope.fetch, 10000); 
    } 

    // Clear the interval when the scope/controller is 'destroyed' 
    $scope.$on('$destroy', function() { 
     $interval.cancel(fetchInterval); 
    }); 

    // kick off initial start 
    $scope.start(); 
} 
+0

htmlページから関数を呼び出す必要がありますか?現在は機能していません。 – luiscovar

+0

あなたは '$ scope.start()'で区間をキックする必要があります。 – devqon

関連する問題