私は次のような単純なフォームを持っています:
<form name="add-form" data-ng-submit="addToDo()">
<label for="todo-name">Add a new item:</label>
<input type="text" data-ng-model="toDoName" id="todo-name" name="todo-name" required>
<button type="submit">Add</button>
</form>
次のように私のコントローラーで:
$scope.addToDo = function() {
if ($scope.toDoName !== "") {
$scope.toDos.push(createToDo($scope.toDoName));
}
}
私がやりたいのは、送信後にテキスト入力をクリアすることです。そのため、モデル値をクリアするだけです。
$scope.addToDo = function() {
if ($scope.toDoName !== "") {
$scope.toDos.push(createToDo($scope.toDoName));
$scope.toDoName = "";
}
}
今を除いて、フォーム入力は「必須」であるため、フォーム入力の周りに赤い境界線が表示されます。これは正しい動作ですが、このシナリオで私が望むものではありません...代わりに、入力をクリアしてから入力要素をぼかしたいと思います。これは私を次のように導きます:
$scope.addToDo = function() {
if ($scope.toDoName !== "") {
$scope.toDos.push(createToDo($scope.toDoName));
$scope.toDoName = "";
$window.document.getElementById('todo-name').blur();
}
}
さて、このようにコントローラーから DOM を変更することは、Angular のドキュメントでは嫌われていることを知っていますが、これを行うより Angular の方法はありますか?