AngularJS: Cuándo pasar $ variable de alcance para funcionar

Estoy usando elTodoMVC Aplicación para mejorar con el marco AngularJS. En elindex.html en las líneas 14-16 ves esto:

<form id="todo-form" ng-submit="addTodo()">
    <input id="new-todo" placeholder="What needs to be done?" ng-model="newTodo" autofocus>
</form>

Observe cómong-submit directiva llama a laaddTodo () funcionar sin elnuevoTodo Modelo que se pasa como un argumento.

Poco tiempo después, encontré el siguiente código en el mismo archivo de la línea 19:

<input id="toggle-all" type="checkbox" ng-model="allChecked" ng-click="markAll(allChecked)">

Se puede ver que el autor decidió pasar elallChecked modelo a laMárcalo todo() funciona esta vez. Si entiendo correctamente, podrían haber referenciado$ scope.allChecked Dentro del controlador en lugar de pasarlo.

¿Por qué utilizar dos enfoques diferentes en el mismo archivo? ¿Es un enfoque mejor en algunas circunstancias? ¿Es este un caso de inconsistencia o se está utilizando una lógica más profunda?

Respuestas a la pregunta(3)

Su respuesta a la pregunta