AngularJS中$apply
$apply是$scope下的特性,传播model的变化。下面的例子两秒之后控制台会显示出已经更新的model, 然而, view 并没有更新。$digest循环不会只运行一次。在当前的一次循环结束后,它会在执行一次循环用来检查是否有model发生了变化。$digest循环会持续知道model不再发生变化。所以不要在监听中使用脏循环。$digest循环最少也会运行两次。
/*** * 关于 apply digest * 两秒之后控制台会显示出已经更新的model, 然而, view 并没有更新。 * 原因:我们没有使用 $apply()方法。 * $digest循环不会只运行一次。在当前的一次循环结束后,它会在执行一次循环用来检查是否有model发生了变化。 * 这就是脏检查,它用来处理在listener函数被执行时可能引起的model变化。 * $digest循环会持续知道model不再发生变化。 * 所以不要在监听中使用脏循环。 * $digest循环最少也会运行两次。 */ app.controller("messageController",["$scope", "$timeout",function ($scope, $timeout) { $scope.getMessage = function () { $timeout(function () { $scope.$apply(function () { $scope.message = "三秒后见"; }); console.log("message:" + $scope.message); }, 2000); }; $scope.getMessage(); }]);