Можно ли использовать ng-show на основе двух условий, я думаю, в данном случае 3 условий. Я знаю, что, вероятно, могу сделать это с помощью функции или директивы, но это происходит при загрузке представления и распространении данных в динамически генерируемые элементы формы с использованием ng-repeat. На этом этапе было бы проще добавить условие в ng-show, поскольку фактический ввод не помечен как недействительный, а сама форма по-прежнему будет отправляться как действительная. Когда форма впервые загружает последний элемент в динамически созданной форме, отображается сообщение об ошибке, как будто оно недействительно, пока $touched = true и $veiwValue не изменится.
Для простоты мое ng-show выглядит так:
<div class="list-help-block" ng-messages="emails_form.email.$error" ng-show="emails_form.email.$dirty || emails_form.email.$invalid">
<div ng-messages-include="/app/views/messages.html" ></div>
</div>
Это отображает сообщения об ошибках в случае недопустимой записи и при ошибке при отправке формы. Однако он также отображает сообщение об ошибке (которого даже не должно быть) при загрузке формы. И как раз по последнему вводу динамически добавляется в форму.
Я хотел бы сделать что-то вроде этого:
ng-show="emails_form.email.$dirty || emails_form.email.$invalid NOT mails_form.email.$pristine"
Я даже не знаю, возможно ли это или можно ли вызвать функцию для исправления проверки после полной загрузки представления и добавления данных в модель. Какие-либо предложения?
Вот весь раздел, который используется для этого:
<div ng-repeat="emails in info.instructor.instructor_emails">
<ng-form name="emails_form" novalidate>
<div class="input-group">
<span class="input-group-label">
<span ng-show="info.instructor.instructor_emails.length==1">@</span>
<span ng-show="info.instructor.instructor_emails.length>=2"><a ng-click="updateRemoveEmail($index)"><i class="fi-x"></i></a></span>
</span>
<input ng-class="{ notvalid: submitted && emails_form.email.$invalid }"type="email" placeholder="[email protected]" name="email" ng-model="emails.email" ng-required="info.instructor.instructor_emails.length>=2"/>
</div>
<div class="list-help-block" ng-messages="emails_form.email.$error" ng-if="!emails_form.email.$pristine && (emails_form.email.$dirty || emails_form.email.$invalid)">
<div ng-messages-include="/app/views/messages.html" ></div>
</div>