2014-02-05 34 views
0

我正在關注'http://angularjs.org/'的基本AngularJS教程,但我對某些函數被觸發後的原因略有困惑。AngularJS函數觸發器原因

在他們的待辦事項列表的應用程序,他們已經在控制器內的如下JS:

$scope.remaining = function() { 
    var count = 0; 
    angular.forEach($scope.todos, function(todo) { 
     count += todo.done ? 0 : 1; 
    }); 
    return count; 
}; 

鏈接到下面的HTML:

<div ng-controller="TodoCtrl"> 
    <span>{{remaining()}} of {{todos.length}} remaining</span> 
    [ <a href="" ng-click="archive()">archive</a> ] 
    <ul class="unstyled"> 
    <li ng-repeat="todo in todos"> 
     <input type="checkbox" ng-model="todo.done"> 
     <span class="done-{{todo.done}}">{{todo.text}}</span> 
    </li> 
    </ul> 
</div> 

然而,當選擇一個複選框/取消,我沒有看到如何觸發$ scope.remaining函數,然後更新UI中的值。還有其他的作用域函數,但在這種情況下似乎並沒有被調用,所以這個函數有什麼特別之處呢?

回答

0

函數remaining用於表達式(例如{{}})爲這些表達式創建角度表。所以每當digest循環發生時,你的函數就會被調用。

+0

那麼這是否意味着ng-controller =「TodoCtrl」中存在的任何表達式將在相關的任何模型更新爲該控制器時自動觸發? – envio

+0

@envio僅包含您在{{}}中包裝的功能或您在ng- *指令中使用的功能 – michael