2013-05-17 66 views
1

我想「刷新」我的看法後,一些新的數據加載到我的工廠,但我無法弄清楚如何正確地做到這一點。

$http.post(url, postKunde).success(function(data, status) { 
       $rootScope.calc = data.calc; 
       $rootScope.$apply(); 
     }).error(function(data, status) { 
       console.log(status); 
     }); 

這是在我工廠使用的方法。每次它觸發我得到這個錯誤:

Error: $digest already in progress 

誰能告訴我如何正確地做到這一點?謝謝...

+1

可能重複:$消化已經在進度](http://stackoverflow.com/questions/14838184/error-digest-already-in-progress) – TheHippo

+0

你可以擺脫'$ rootScope。$ apply()'調用嗎? –

+0

是的,但然後對數據的更改不適用於視圖。 – rza132456

回答

4

你可以寫一個安全的應用,將檢查是否存在摘要:

$scope.safeApply = function(fn) { 
    var phase = this.$root.$$phase; 
    if(phase == '$apply' || phase == '$digest') { 
    if(fn && (typeof(fn) === 'function')) { 
     fn(); 
    } 
    } else { 
    this.$apply(fn); 
    } 
}; 

參考這個小寶石:https://coderwall.com/p/ngisma

的[錯誤
+0

謝謝,這是一個巨大的幫助! – rza132456