我正在通过ajax加载对象。在发送请求之前,我在屏幕上放置了一个进度条(使用pNotify),并使用setInterval更新它。
当收到响应时,我将数据对象转储到作用域中,并且angular将它们全部呈现在一个ng-repeat中。然而,当它这样做时,它会锁定浏览器-大约3秒钟(可以接受,它正在加载整个文档,其中包括数百个节点,每个节点包含2-5条指令)。
这意味着我漂亮的动画进度条完全停止了。
有没有办法告诉angular在渲染我的所有数据时,让进度条继续显示动画(或者防止它锁定浏览器)?类似于Visual Basic中的"DoEvents“?
发布于 2014-05-22 10:01:32
这与angular无关,而是因为js是一种单一的受限制语言。如果您希望您的进度条继续工作,您应该以异步方式解析我们的信息。或者一次加载一小块数据,这意味着将ng-repeat分配给一个小数组,并使用递归函数或简单的带有超时的for look值来异步增加它,例如
$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)
}像这样的事情应该可以让你逐步增加你的列表。这应该可以解决冻结条的问题。
https://stackoverflow.com/questions/23796547
复制相似问题