2017-06-01 28 views
0

angular.js 1.xの次のコードでは、数秒ごとに呼び出してdomを更新するダッシュボードデータセットを作成する必要があります。しかし、私は思っているのでちらちらです$scope.DOMdataArray = []リアルタイムデータの更新時にng-repeatが点滅する

私はすでにtrack by $indexを試してみましたが助けなかった。この問題を解決する方法や、ng-repeatによって生成されたDOMがちらつくようなコードを書く方法はありますか?

​​
+0

どのように多くの項目、あなたの配列を持っていますか?それは大きな配列ですか? –

+0

@ The.Bear 10-20は大きくないがダイナミックではない。私はサイズをハードコードするべきではありません。 – DragonKnight

+0

ネットワークコールを行う前にアレイを消去し、ネットワーク応答を待っている間に繰り返しを空白にします。 – jonas

答えて

1

これを試しましたか?

  function someDataInterval() { 
       _.map(urlsArray,function(url) { 
        $http.get(url).then(function(res) { 
         // some work on response 
         $scope.DOMdataArray = []; 
         $scope.DOMdataArray.push(/*some data for ng-repeat*/) 
        }) 
       }) 
      } 
      someDataInterval() 
      setInterval(someDataInterval,5000) 

これはちらつきが見えないように、あなたはいつも小さな荷重アイコンを使用することができます動作しない場合。リストを表示するにはng-showを使用します。

  function someDataInterval() { 
       $scope.loading = true; 
       _.map(urlsArray,function(url) { 
        $http.get(url).then(function(res) { 
         // some work on response 
         $scope.DOMdataArray = []; 
         $scope.DOMdataArray.push(/*some data for ng-repeat*/) 
         $scope.loading = false; 
        }) 
       }) 
      } 
      someDataInterval() 
      setInterval(someDataInterval,5000) 

とHTML:

 <h1 ng-show="!loading" ng-repeat="x in DOMdataArray">{{x.name}}</h1> 
     <img ng-show="loading" src="img/image-loading.gif" /> 
+0

最初の1つは、私はそれを試みたが、助けなかった。もう1つはあなたを更新し、職場で試してみてください。 – DragonKnight

関連する問題