$ digest已经运行 - AngularJS

时间:2013-05-17 14:18:58

标签: 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.log(status);
        });

这是我在工厂使用的方法。每次触发我都会收到此错误:

Error: $digest already in progress

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

1 个答案:

答案 0 :(得分: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