These controls work because they are only bound to the todos object and use update-in to modify it. That makes them terrible for data entry.
{{:text}}These controls work for data entry because they are only bound to the local scope. They would have to be explicitly persisted by the controller to be saved, so they are a bit more work to deal with.
Local scope todo object:
{{todo}}
The upper scope todos object:
{{todos}}
Record-level atoms are the best solution for data entry because they work fluidly in exactly the same way that regular scoped data in angular does.
| {{x}}: {{(first x)}} + 1 = {{(addone x)}} = {{(addone x)}}. {{(first x)}} is {{(if (last x) "odd" "even")}} |