ermolaevalexey
@ermolaevalexey
frontend веб-разработчик

AngularJS — как обернуть элементом из родительской директивы элементы дочерней директивы?

Необходимо реализовать валидатор для формы
Столкнулся в коде вот с такой структурой формы:

<my-form>
   <my-errors></my-errors>
   <my-input name="username" type="username" label="Имя" required></my-input>
   <my-input name="password" type="password" label="Пароль" required></my-input>
   <my-input name="phone" type="phone" label="Телефон"></my-input>
   <my-input name="email" type="email" label="Email"></my-input>
   <button class="btn btn-success btn-block">Отправить</button>
</my-form>


То есть директивы вложены непосредственно друг в друга. Как я понял из этого, тег <my-form> должен отображать в шаблоне <form>, который и оборачивает инпуты, которые тоже выводятся через свои директивы. И как я понял еще, инпуты должны как бы зависеть от формы, то есть без нее не отображаться. Проблема в том, что сейчас они никак не взаимоействуют. То есть инпуты живут своей жизнью, а форма - своей(ее шаблон даже не выводится в DOM).

Сейчас директива для отображения формы выглядит так:

// js/myForm.js
    'use strict';

(function (w) {
	angular.module('app', [])
	.directive('myForm', function () {
		return {
			restrict: 'E',
			transclude: true,
			scope: {},
			templateUrl: '/js/partials/myForm.html'
		}
	});
})(window);


Для отображения инпута директива выглядит так:
// js/myInput.js

'use strict';

(function (w) {
	angular.module('app', [])
	.directive('myInput', function () {
		return {
			require: 'myForm',
			restrict: 'E',
			transclude: true,
			scope: {
				name: '@name',
				type: '@type',
				required: '@required',
				label: '@label',
			},
			templateUrl: '/js/partials/myInput.html'
		}
	});
})(window);


Пытался сделать инпуты дочерними через require, но от этого нет толку. В DOM по-прежнему инпуты не отображаются внутри тега <form>.

Может быть кто-то сталкивался с подобным вложением? Как можно организовать код, чтобы все отображалось корректно?

Проект целиком на GItHub:

https://github.com/ermolaevalexey/alfamotors-test-...
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы