У меня есть родительский контроллер с именем 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
будет ложным.
Я знаю, что у меня может быть слишком многосложный вопрос.