У меня простая форма:
<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 сделать это?