В angularjs мне интересно, какие различия между ng-submit и ng-click? В частности, плюсы и минусы каждого и того, когда вы должны это делать или нет? Благодарю!
** EDIT **
Я посмотрел на это немного больше, но мне все еще интересно, что (если есть) преимущество использования ng-submit? Не могли бы вы использовать ng-click вместо всех ng-submits? Это вызовет проблемы? Еще раз спасибо!
Различия между ng-submit и ng-click
Ответ 1
Директива ngSubmit связывается с отправить событие в браузере, которое запускается при отправке формы.
Из MDN:
Обратите внимание, что submit запускается только на элементе формы, а не на кнопке или в сообщении. (Формы отправляются, а не кнопки.)
Итак, вы можете использовать его, чтобы отправить форму регистрации пользователя или что-то в этом роде.
С другой стороны, директива ngClick может применяться к любому элементу.
Из источник:
Директива ngClick позволяет указать пользовательское поведение, когда элемент щелкнут.
Используйте его, чтобы позволить вашему пользователю взаимодействовать со своей страницей каким-либо образом, кроме как отправить форму. Возможно, нажмите кнопку "предыдущий" или "следующий" пейджер, или, возможно, карту или что-то еще.
Ответ 2
Angular предотвращает действие по умолчанию (отправка формы на сервер), если только элемент не имеет действие, действие данных или x-action сильные > атрибуты. Таким образом, при использовании angular с формами без этих атрибутов ng-click и ng-submit можно использовать для указания метода javascript для вызова. вы можете получить все входные значения в области видимости из-за двухстороннего свойства привязки данных angular.
Не могли бы вы использовать ng-click вместо всех ng-submits? Это вызовет любые проблемы?
его можно использовать, но при использовании ng-click он не учитывает атрибуты ввода html (как требуется, min-max, maxlength) и немедленно выполняет тело метода.
Ответ 3
Моя любимая причина использования ng-submit
заключается в том, что она позволяет вам нажимать клавишу <Enter>
, когда вы фокусируетесь на ввод формы и т.д., и форма будет отправлена. (Предположим, что у вас есть кнопка type="submit"
в форме.)
Его более дружественная клавиатура и удобство доступа, чем наличие кнопки ng-click
на кнопке, потому что с помощью ng-submit
пользователь может нажать кнопку отправки или нажать <Enter>
.
Ответ 4
Если мы хотим, чтобы форма не была отправлена, когда она недействительна, вместо кнопки ng-click на кнопке мы будем использовать директиву ng-submit в самой форме
<div class="row">
<form name="adduser" ng-submit="AddUser(adduser.$valid)">
<div id="name-group" class="form-group-lg">
<input type="text"
required
name="name"
ng-model="userfullName"
class="form-control"
placeholder="Full Name">
</div>
В ng-submit мы вызываем функцию AddUser из контроллера с параметром formname. $valid. Эта функция отправки будет вызываться только в том случае, если форма действительна или, другими словами, все введенные пользователем формы действительны. Имейте в виду, что в этом случае from не будет отправлен, если форма недействительна.
Когда мы используем ng-click, форма будет отправлена, даже если она недействительна. Два наблюдения для ng-click следующие:
Мы смогли отправить форму, даже если форма недействительна Для недопустимых входов значение было установлено на undefined в контроллере
Ответ 5
ng-submit, связанный с формами, это событие срабатывает при отправке формы. Где, когда ng-click может работать без отправки формы