Мне нужно убедиться, что пользователи помещают сообщение в поле textarea перед отправкой формы с помощью ng-click.
Вот функция, которая будет запускаться при нажатии ng-click:
$scope.reject = function() {
$http.post( 'http://server.com/api/reject/' + carID, { Message: Message } ).
success(function(data) {
$scope.output = data;
})
}
Вот мой HTML:
<div id="reject" class="animated">
<h3>WARNING</h3>
<p>Your are about to <strong><u>REJECT</u></strong> this CAR. Are you sure this is the action that you want to take?</p>
<form name="reject">
<textarea placeholder="Message" ng-model="Message" ng-required="true"></textarea>
<button ng-click="reject.$valid && reject()">Reject</button>
</form>
</div>
Мой код HTML ng-click, полученный из этого сообщения SO:
<form name="myform">
<input type="text" ng-model='name' ng-required="true" />
<button ng-click="myform.$valid && preview()">Preview</button>
<button ng-click="myform.$valid && update()">Update</button>
</form>
Но почему-то это не работает для меня. Если я удаляю forward.$valid &&
и просто имею его как ng-click="reject()
он работает нормально, хотя я все еще могу запустить его, не вставляя сообщение. Мне нужна текстовая область, которая потребуется. Поэтому мне нужно проверить прежде чем функция запустится. Отрывок, который я получил от другого сообщения, должен работать, но я не знаю, почему это не так.
EDIT - вот скрипка: Моя скрипка
Теперь окно сообщения принадлежит мне, а другое - ниже, чем кто-то другой, работающий на скрипке. Я не понимаю, почему мой не работает.
Может кто-нибудь сказать мне, что я делаю неправильно?
Я запустил console.info в вашу рабочую функцию предварительного просмотра и обнаружил, что ваше значение отклонения в области $ регистрируется как конструктор. Я могу только догадываться, что вы нашли ключевое слово. Я изменил имя функции на reject2 и появился как функция и запускает запрошенное предупреждение. Вот рабочая скрипка
$scope.reject2 = function() {
alert("hi");
}
ng-click="reject.$valid && reject2()
Извините, что я поделился вашей скриптовой ссылкой в первый раз. Он обновляется сейчас.
Вам нужно изменить reject
на что-то еще в <form>
и ng-click
и в другом месте. Это ключевое слово protected.
reject.$valid
будет ложным, потому что форма недействительна, если <textarea> не заполнено. Это будет неверно, потому что этоng-required
. Следовательно, функция не будет работать.