<input type="checkbox" ng-model="todo.done">
I guess I'm a purist.
<input type="checkbox" ng-model="todo.done">
I guess I'm a purist.
Using xml namespace: <input type="checkbox" ng:model="todo.done">
Using underscore in the attribute name: <input type="checkbox" ng_model="todo.done">
As an x-* attribute: <input type="checkbox" x-ng-model="todo.done">
As a HTML5 data attribute: <input type="checkbox" data-ng-model="todo.done">
I think their may be a few more, but in any case, Angular is flexible enough that you can choose the representation that is best for you and your team.
I really don't want basic stuff in my application logic.
Allowing users to flip arbitrary booleans is a bit like declaring a public variable though. You can of course make them go through a setter if you prefer encapsulation.
<input type="checkbox" ng-click="setDone($event.target.checked)">