Проверка детских форм - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть родительский контроллер с именем employeeController, у которого есть 3 дочерних элемента employeeDetails, employeeVehicles, employeeMore.Каждый из этих дочерних элементов является отдельной вкладкой (и $state) на моей странице и содержит форму, которая может быть недопустимой.

Иерархия выглядит следующим образом:

main.employee
main.employee.details
main.employee.vehicles
main.employee.more

Народительский контроллер У меня есть кнопка Сохранить, которая должна проверить, все ли 3 дочерние формы действительны или нет.

Скажите, что это одна из форм

<form name="vm.employeeDetailsForm" novalidate>
    <formly-form class="top20" model="vm.model" fields="vm.fields" options="vm.options" form="vm.employeeDetailsForm"></formly-form>
</form>

Как я могу проверить эту форму изУровень родительского контроллера?

Насколько я знаю, его нет в родительском $scope.Я не знаю, что было бы хорошим подходом, поскольку я прочитал, что дети должны сами передавать эту информацию родителю.

Моя первоначальная идея заключалась в том, чтобы транслировать событие при нажатии кнопки Сохранить

vm.invalid = false;
function Save() {
   $scope.$broadcast('save-employee');

   if(vm.invalid) {
       return;
   }
}

, а затем внутри каждого дочернего контроллера сделайте что-то вроде:

$scope.$on('save-employee', function() {
    var form = vm.employeeDetailsForm;
    form.$setSubmitted();
    $scope.$parent.vm.invalid = form.$invalid;
});

, но это будет работать только на одной вкладке, на которой мы находимся.Если бы мы переключили вкладку (и контроллер одновременно), оставив недопустимую форму, и перешли к действительной форме, после нажатия Сохранить vm.invalid будет ложным.

Я знаю, что у меня может быть слишком многосложный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...