原因是:框架本身已经在做脏数据检测了,我们没有必要再手动调用$apply或者$digest。
这里自然而然出现了一个疑问:什么时候需要我们手动调用$apply或者$digest,什么时候不需要呢?先列出以下两种情况:
情况1:controller中如果有异步操作,比如ajax回调,timeout延时等。可以这么理解:由于异步(延迟)的存在,当开始执行回调函数的时候,angularJS自身controller中的脏值检测已经结束,无法检测到回调函数导致数据的变化。
{{text}}
myModule = angular.module('myModule' myModule.controller("ctrl_1",cope){
$scope.text = "place"
setTimeout( $scope.text = "value setted after time out" $scope.$apply();
},1000
});
调用$apply(),$timeout service会自动调用$apply();
情况2:在代码中修改$scope中的数据。这种情况是在angular框架之外操作$scope中的数据,angular不能检测到数据变化是正常的。
<span style="color: #008000">//
<span style="color: #008000">html<div id="div1" ng-controller="ctrl_1">
{{text}}