Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng更新实时数据时重复闪烁_Javascript_Angularjs_Arrays_Dom_Angularjs Ng Repeat - Fatal编程技术网

Javascript ng更新实时数据时重复闪烁

Javascript ng更新实时数据时重复闪烁,javascript,angularjs,arrays,dom,angularjs-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) {

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

您的阵列中有多少项?这是一个大数组?@The.Bear 10-20不是很大,但它是动态的。我不应该硬编码大小。您在进行网络调用之前清除数组,在等待网络响应时将repeat设置为空。@jonas这是真的,但我还能做什么?如何解决这个问题?第一个是的,我试过了,但没有帮助。第二个我会告诉你的,你应该在工作场所试试。