2016-06-14 69 views
0

你好我试图把文件上传到服务下面这个教程:Upload files Angular,并且有些代码是这样的:

element.bind('change', function() { 
    scope.$apply(function() { 
     var file = element[0].files[0]; 
     ... //some logic 
    }); 
}); 

它一直在努力罚款Chrome和Safari浏览器,但是当我测试的IE浏览器,它给我这个错误:

Error: [$rootScope:inprog] $apply already in progress 

参照这一行:

scope.$apply(function() { 

并且下面的代码没有得到执行。我在Chrome中没有遇到这样的错误,并且以下代码运行良好。我试过这个:get rid of $apply error,然后错误不显示,但下面的代码仍然不执行。我该如何解决这个问题?谢谢! (我正在使用IE11)

+0

你试过'$ timeout'? http://stackoverflow.com/a/18996042 – Satpal

+0

什么触发这个错误:手动用户输入或程序化事件? – floribon

回答

0

当我们强行尝试同时运行两个摘要循环时,会出现这种错误。

实际上,无论何时我们改变模态,角度都会自动运行摘要循环,以获取这些更新值反映在视图中。 在使用$ scope。$ apply()时,您强烈要求角度再次运行其摘要循环,而不会停止已运行的摘要循环,该循环会引发错误。

FIX- $超时(函数(){ 写侑这里代码.. },0)

+0

这解决了这个问题。谢谢! – richards