2014-03-29 107 views
16

我收到angularjs [$ rootScope:inprog]錯誤。

Error: [$rootScope:inprog] http://errors.angularjs.org/1.2.7/$rootScope/inprog?p0=%24digest

這是調用

Members.get({}, function (response) { // success 
    $scope.family_mem = response.data;  
    }, function (error) { // ajax loading error 

    Data.errorMsg(); // display error notification 
    }); 
控制檯

我得到的結果通過PHP控制器function.but沒有更新$scope.family_mem而不是去錯誤的部分功能。 這是指令

myApp.directive('mySelect', function() { 
    return{ 
    restrict: 'A', 
    link: function(scope, element){ 
     $(element).select2(); 
    } 
    }; 
}); 
+0

你能添加小提琴嗎? –

+0

我認爲你正在使用縮小的angularjs源代碼。嘗試使用'angular.js'而不是'angular.min.js',它會給出錯誤的詳細信息。 – 2014-03-29 18:29:34

+0

使用angular.js獲取摘要進行中時出錯 –

回答

26

通常這意味着你定義$ rootScope。$手動地方適用的具有生命週期已經是另一角碼之內。這在通常情況下不應該發生,因爲角度跟蹤生命週期本身。需要的一種常見情況是何時需要從非角度代碼更新範圍(如jquery或老式的js東西)。所以請檢查你是否有這個地方。如果你真的需要它更好地使用安全應用(通用的代碼片段):

angular.module('main', []).service('scopeService', function() { 
    return { 
     safeApply: function ($scope, fn) { 
      var phase = $scope.$root.$$phase; 
      if (phase == '$apply' || phase == '$digest') { 
       if (fn && typeof fn === 'function') { 
        fn(); 
       } 
      } else { 
       $scope.$apply(fn); 
      } 
     }, 
    }; 
}); 

然後你可以注入這個服務和進行必要的呼喚:

scopeService.safeApply($rootScope, function() { 
    // you code here to apply the changes to the scope 
}); 
+0

對於數據庫中特定數量的數據,未顯示任何錯誤。限制後顯示錯誤 –

+0

好的。我想這個問題可以在服務器端,但是當你處理邏輯時,你提到的錯誤是另一個錯誤?錯誤發生在哪裏?在Data.errorMsg()?別的地方? –

+0

我不知道進展錯誤發生在哪裏。但Data.errorMsg()顯示另一個自定義的錯誤。 –

4

[$ rootScope:inprog]進度錯誤在我的情況下:
案例1:它意味着你一次執行兩個動作。

例子:

goView(); 
hidePopOver(); //Will trigger error 

使用$超時,以確保兩個動作(功能)不會在同一時間運行。

goView(); 
$timeout(function() { 
    hidePopOver(); 
}, 300); 

案例2:一個動作還沒有完全執行。
使用$ timeout確保第一個動作已執行。

$timeout(function() { 
    $(element.target).trigger('click'); 
}, 300);