angularjsの$scope.$apply(); エラー

データバインドが効かないとき、$scope.$apply();

を実行して反映させるが、むやみやたらと実行してしまってる。

そんなとき以下のエラーが。。。

Error: [$rootScope:inprog] $apply already in progress

 

ほんとうに実行をするべきか見直して、それでも実行したいときは、以下の書き方で大丈夫そう。

if ($scope.$root.$$phase != '$apply' && $scope.$root.$$phase != '$digest') {
     $scope.$apply();
}

 

これで実行してもいいときだけ、$scope.$apply();を実行することができる。