2016-06-14 64 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