Clicking on a checkbox and calling ng-click: the model is not updated before ng-click kicks in so the checkbox value is wrongly presented in the UI:
This works in An
Why dont you use
$watch('todo',function(.....
Or another solution would be to set the todo.done inside the ng-click callback and only use ng-click
- 
    {{todo.text}} {{todo.done}}
and
$scope.onCompleteTodo = function(todo) {
        todo.done = !todo.done; //toggle value
        console.log("onCompleteTodo -done: " + todo.done + " : " + todo.text);
        $scope.current = todo;
}