是什么原因导致在Angular中调用控制器函数?

时间:2015-03-06 07:38:47

标签: angularjs

我正在阅读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()?

1 个答案:

答案 0 :(得分:1)

@Linh Pham指出这是所谓的Two-Way-Databinding。由于Angular的$digest周期,它以这种方式工作。

  

处理当前范围及其子项的所有观察者。因为观察者的听众可以改变模型,$digest()会一直呼叫观察者,直到不再有听众为止。

您可以将其想象为静态循环,它会监视更改并更新相应$scope中的值。你也可以&#34;勾&#34;通过手动绑定$watch来进入这个循环,例如:

$scope.$watch('myScopeVar', function() {
    // do something
});