我通过ajax加载对象。在发送请求之前,我在屏幕上放置了一个进度条(使用pNotify)并使用setInterval
进行更新。
收到回复后,我将数据对象转储到范围内,并将角度全部呈现在ng-repeat
中。然而,虽然它正在执行此操作,但它会锁定浏览器 - 大约3秒钟(可接受,它正在加载整个文档,其中包含数百个节点,每个节点包含~2-5个指令)。
这意味着我漂亮的动画进度条完全停止。
有没有办法告诉角度让进度条在渲染我的所有数据时继续动画(或阻止它锁定浏览器)?像Visual Basic中的“DoEvents”?
答案 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)
}
这样的事情应该可以让你逐步增加你的清单。这应该可以解决你冻结酒吧的问题。