I got this example from the W3Schools tutorial on AngularJS. I made a small change from binding the value of the checkbox span to using an expression. I figured that the todo list wouldn't update any more. But it still does. What causes the ng-repeat to fire just because I have added a todo item?
http://plnkr.co/edit/Kojz2ODWDS8dFDNzjYR5?p=preview
<!DOCTYPE html>
<html>
  <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
  <body ng-app="myApp" ng-controller="todoCtrl">
    <h2>My Todo List</h2>
    <form ng-submit="todoAdd()">
        <input type="text" ng-model="todoInput" size="50" placeholder="Add New">
        <input type="submit" value="Add New">
    </form>
    <br>
    <div ng-repeat="x in todoList">
        <input type="checkbox" ng-model="x.done"> <span>{{x.todoText}}</span>
    </div>
    <p><button ng-click="remove()">Remove marked</button></p>
    <script>
    var app = angular.module('myApp', []); 
    app.controller('todoCtrl', function($scope) {
        $scope.todoList = [{todoText:'Clean House', done:false}];
        $scope.todoAdd = function() {
            $scope.todoList.push({todoText:$scope.todoInput, done:false});
            $scope.todoInput = "";
        };
        $scope.remove = function() {
            var oldList = $scope.todoList;
            $scope.todoList = [];
            angular.forEach(oldList, function(x) {
                if (!x.done) $scope.todoList.push(x);
            });
        };
    });
    </script>
  </body>
</html>
 
    