AngularJS渲染会阻止进度条更新

时间:2014-05-22 01:44:55

标签: javascript jquery angularjs

我通过ajax加载对象。在发送请求之前,我在屏幕上放置了一个进度条(使用pNotify)并使用setInterval进行更新。

收到回复后,我将数据对象转储到范围内,并将角度全部呈现在ng-repeat中。然而,虽然它正在执行此操作,但它会锁定浏览器 - 大约3秒钟(可接受,它正在加载整个文档,其中包含数百个节点,每个节点包含~2-5个指令)。

这意味着我漂亮的动画进度条完全停止。

有没有办法告诉角度让进度条在渲染我的所有数据时继续动画(或阻止它锁定浏览器)?像Visual Basic中的“DoEvents”?

1 个答案:

答案 0 :(得分:0)

这与角度无关,但事实上js是单一的威胁语言。如果您希望进度条继续工作,您应该以异步方式解析我们的信息。或者一次加载一小块数据,这意味着将ng-repeat分配给一个小数组,并使用递归函数异步增加它,或者只是用于查看超时类似

$scope.list=[];
$scope.list=$scope.list.concat(ajaxlist(0,20)); // adds the first 20 elements to the array
for(var i=21;i<ajaxlist.length;i++){
    (function(index){
       $timeout(function(){
           $scope.list.push(ajaxlist[index]);
       })
    })(i)
}

这样的事情应该可以让你逐步增加你的清单。这应该可以解决你冻结酒吧的问题。