Javascript $digest已在运行-AngularJS

Javascript $digest已在运行-AngularJS,javascript,http,model-view-controller,angularjs,Javascript,Http,Model View Controller,Angularjs,我想在一些新数据加载到我的工厂后“刷新”我的视图,但我不知道如何正确执行此操作 $http.post(url, postKunde).success(function(data, status) { $rootScope.calc = data.calc; $rootScope.$apply(); }).error(function(data, status) { console.lo

我想在一些新数据加载到我的工厂后“刷新”我的视图,但我不知道如何正确执行此操作

$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

有谁能告诉我如何正确地做到这一点吗?谢谢…

您可以编写一个安全应用程序,检查是否有摘要:

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

这个小宝石的参考资料:

您可以编写一个安全应用程序,检查是否有摘要:

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

这个小宝石的参考资料:

的可能重复项您能摆脱
$rootScope.$apply()
调用吗?是的,但是数据上的更改不会应用于视图。
$http
回调包含在对
$apply()
的调用中(或者它们调用
$apply
),所以您不需要调用
$apply()
此处。的可能重复项您可以去掉
$rootScope.$apply()
调用吗?是的,但是数据上的更改不会应用于视图。
$http
回调包含在对
$apply()
的调用中(或者它们调用
$apply
),因此您不需要调用
$apply()
这里。谢谢。这帮了大忙!谢谢,这帮了大忙!