Я пытаюсь создать редактируемый список, используя ng-repeat
. Я хочу напомнить пользователю обновить все изменения до перехода, поэтому я использую ng-form
для создания "вложенных" форм "на лету", потому что в документации говорится, что я могу использовать валидацию на этих динамически создаваемых входах.
Хотя это работает в HTML, я не вижу, как получить доступ к этим динамически созданным формам и связанным полям проверки в контроллере. В частности, когда пользователь меняет ввод, я использую свойство $dirty формы, чтобы вызвать кнопку, чтобы сообщить пользователю о внесении изменений. Все идет нормально. Однако, как только изменения будут зафиксированы, я хочу $setPristine()
в поле указать, что изменения были установлены. Могут быть другие способы обеспечения того, чтобы изменения были зафиксированы на каждом входе, прежде чем я разрешаю основную форму, но это было лучшее, что я мог придумать.
К сожалению, несмотря на то, что в документации указано, что если я назову ng-форму, она будет распространена на объект $scope
, я не могу найти способ получить к ней доступ. $scope.dynamic_form
- undefined.
Вот плункер, показывающий, что я имею в виду:
Спасибо!
[EDIT] Чтобы добавить к проблеме, что работает для этого конкретного примера, нужно добавить к ng-click
динамически созданный ввод:
ng-click="namesForm.name.$setPristine();clean()"
Но у меня все еще нет доступа к динамически созданной форме в контроллере. Я хотел бы, например, добавить наблюдателя к namesForm.name.$pristine
, чтобы я мог установить mainForm.$setValidity(false)
всякий раз, когда подформация $dirty
, чтобы пользователь не отправлял основную форму до тех пор, пока все изменения подформы не будут были совершены.
Итак, вкратце, проблема заключается в том, как получить в родительском контроллере значения проверки динамически созданной вложенной ngForm?