Перебрать все экземпляры ng-form внутри формы для проверки

Я создал плункер.

Я генерирую элементы ввода динамически, когда нажимается кнопка «+ Name», каждый внутри ng-form.

Как я могу получить все экземпляры ng-form для проверки каждой отдельной ng-формы? Чтобы кнопка "+Имя" оставалась неактивной, если поля недействительны или создается новая нг-форма?

Изменить Подробнее о структуре формы

В форме есть и другие поля, которые я удалил для краткости. Это в основном длинная форма, что-то вроде

<form name="myForm">
     <input name="one" />
     .
     .
     <div ng-repeat....>
         <ng-form>
            <input name="schoolName" />
         </ng-form>
     </div>
    <button>+ Name</button>  <!-- I cannot check for myForm.$valid here-->
    <!-- since the person might not filled the rest of the below fields -->
     <!-- hence the need to grab "each" "ng-form" --> 
    <input name="some" />
    <input name="other" />        
</form>

person parsh    schedule 04.09.2013    source источник
comment
Так же, как вы отключаете кнопку отправки?   -  person TheSharpieOne    schedule 05.09.2013
comment
@TheSharpieOne - я не могу этого сделать, так как после ng-формы есть еще поля. Я добавил больше деталей в q.   -  person parsh    schedule 05.09.2013


Ответы (1)


1) http://docs.angularjs.org/api/ng.directive:form сказать:

В угловых формах могут быть вложенными. Это означает, что внешняя форма допустима, когда все дочерние формы также допустимы.

Поэтому ваша основная форма будет действительна только тогда, когда все дочерние формы будут действительны.

2) если вы хотите/должны иметь ссылки на дочерние FormControllers в основной форме, вам нужно использовать пользовательские директивы.

Я обновляю ваш код: http://plnkr.co/edit/Vvz6VXJUj4lF0NR9gjjL

  • script.js содержит 2 директивы: «mainForm» и «childForm», которые показывают вам, как они могут взаимодействовать.
  • Раздел «Результаты» в index.html показывает, когда «mainForm» становится действительным. И, как вы можете видеть, это подтверждает то, что говорится в документации Angular.js.
person kostik    schedule 04.09.2013
comment
это спасло мой день. Большое спасибо. - person sanjith edward; 29.03.2018