Angular JS:$Scope.Apply()
Angular JS : $Scope.Apply()
我想了解更多关于 $scope.apply() 的实时使用情况。
我们可以在控制器中使用 $scope.apply() 多少次?
例如,我有一些事件,如 ng-click() 、 ng-change() 、 ng-blur() 等。所有事件都在同一个控制器中。对于每个事件,我应该使用 $scope.apply() 吗?如果是,我收到错误:
Error: [$rootScope:inprog] [http://errors.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply][1]
at Error (native)
我在这个论坛上看到,删除附加的 $scope.apply() 将解决问题。
angularjs $scope.$apply() gives this error: Error: [$rootScope:inprog]
我实现了从代码中删除多个 $scope.apply() 的相同解决方案。错误消失了,但我想知道如何以及为什么?
谁能解释一下。
提前致谢。
$scope.apply()
是更新 DOM 的触发器,在大多数情况下(例如来自 DOM 的触发器像 ng-click
触发器的评估是包装在 $scope.apply()
中,因为它被传递给你的控制器。你通常不需要调用 $scope.apply()
因为它已经被处理了,但是如果你遇到一些没有正确更新的问题,你可以使用 $scope.apply()
基本上推动它更新。为了防止在 apply 已经被评估时调用 apply 你可以像这样进行安全检查:
if (!$scope.$$phase)
$scope.apply();
$$phase
是一个 angular 内部 属性 即 null/undefined 当没有范围应用正在进行时,当 $scope.apply()
正在执行。
$scope.apply()
的工作方式是找到最深的子作用域(最里面的作用域)并检查更改、调用监视等,然后它向上爬行直到到达根作用域,就像您可能想象这是一个相当沉重的电话,应该尽可能避免。
我想了解更多关于 $scope.apply() 的实时使用情况。 我们可以在控制器中使用 $scope.apply() 多少次?
例如,我有一些事件,如 ng-click() 、 ng-change() 、 ng-blur() 等。所有事件都在同一个控制器中。对于每个事件,我应该使用 $scope.apply() 吗?如果是,我收到错误:
Error: [$rootScope:inprog] [http://errors.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply][1]
at Error (native)
我在这个论坛上看到,删除附加的 $scope.apply() 将解决问题。
angularjs $scope.$apply() gives this error: Error: [$rootScope:inprog]
我实现了从代码中删除多个 $scope.apply() 的相同解决方案。错误消失了,但我想知道如何以及为什么?
谁能解释一下。
提前致谢。
$scope.apply()
是更新 DOM 的触发器,在大多数情况下(例如来自 DOM 的触发器像 ng-click
触发器的评估是包装在 $scope.apply()
中,因为它被传递给你的控制器。你通常不需要调用 $scope.apply()
因为它已经被处理了,但是如果你遇到一些没有正确更新的问题,你可以使用 $scope.apply()
基本上推动它更新。为了防止在 apply 已经被评估时调用 apply 你可以像这样进行安全检查:
if (!$scope.$$phase)
$scope.apply();
$$phase
是一个 angular 内部 属性 即 null/undefined 当没有范围应用正在进行时,当 $scope.apply()
正在执行。
$scope.apply()
的工作方式是找到最深的子作用域(最里面的作用域)并检查更改、调用监视等,然后它向上爬行直到到达根作用域,就像您可能想象这是一个相当沉重的电话,应该尽可能避免。