我正在阅读Angular教程并看到这样的代码:
todoApp.controller("ToDoCtrl", function($scope) {
$scope.todo = model;
$scope.warningLevel = function() {
return $scope.incompleteCount() < 3 ? "label-success" : "label-warning";
}
});
<span ng-class="warningLevel()">Tasks</span>
与magic一样,每当调用warningLevel()返回一个新值时,span都会更改其类。但教程没有解释原因。我不明白Angular如何“知道”warningLevel()会返回一个新值并需要再次调用。是什么触发每次调用warningLevel()?
答案 0 :(得分:1)
@Linh Pham指出这是所谓的Two-Way-Databinding。由于Angular的$digest
周期,它以这种方式工作。
处理当前范围及其子项的所有观察者。因为观察者的听众可以改变模型,
$digest()
会一直呼叫观察者,直到不再有听众为止。
您可以将其想象为静态循环,它会监视更改并更新相应$scope
中的值。你也可以&#34;勾&#34;通过手动绑定$watch
来进入这个循环,例如:
$scope.$watch('myScopeVar', function() {
// do something
});