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