javascript - ng-repeat 更新实时数据时闪烁

标签 javascript angularjs arrays dom angularjs-ng-repeat

在 angular.js 1.x 中的以下代码中,我需要创建一个仪表板数据集,每隔几秒调用一次并更新 dom。然而它闪烁是因为我认为 $scope.DOMdataArray = []

我已经尝试过通过 $index 进行跟踪,但没有帮助。有没有办法解决这个问题或者编写代码让 ng-repeat 生成的 DOM 不闪烁?

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

最佳答案

你试过这个吗?

            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" /> 

关于javascript - ng-repeat 更新实时数据时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318305/

相关文章:

javascript - 带有 JSON 对象的 Angular js 中的图表

python - 使用 swig 包装读/写类函数

PHP - 为什么数组中两个项目的值都会发生变化?

PHP重命名数组的键

javascript - PHP、Jquery、Tablesorter 2.23.1 - 如何添加或删除已排序的列并刷新剩余排序?

angularjs - 如何在 AngularJS 下拉多选中使用两个事件 onItemSelect 和 onItemDeselect

Javascript:对象如何存储对另一个对象方法的引用,并将其称为 "remotely"?

javascript - AngularJS querySelector 按 ID 返回未定义

javascript - 使用ajax发送用于文件上传的表单数据

javascript - 在javascript中为什么使用 "var that = this "