Задать вопрос
@vasIvas

Почему возникает ошибка если не обернуть директиву при её расширении?

Почему при таком раскладе возникает ошибка?

template: '',

<div class="container">
	<sub></sub>
</div>
<script>
	function superDirective(){
		return {
			template: '<div>text</div>'
		}
	}

	function subDirective(){
		return {
			template: '<super></super>',
			replace: true
		}
	}
	
	const app = angular.module("app", []);
	
	app.directive('super', ['$injector', superDirective]);
	app.directive('sub', ['$injector', subDirective]);
</script>


Но если обернуть расширяемую директиву, то нет?
template: '<div><super></super></div>',
  • Вопрос задан
  • 184 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    WEB-022 Разработка на Angular. Продвинутый уровень
    1 неделя
    Далее
  • Учебный центр IBS
    WEB-007 Разработка на JavaScript
    1 неделя
    Далее
  • Javascript.ru
    Курс по Angular
    6 недель
    Далее
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
https://docs.angularjs.org/error/$compile/multidir...

там все написано. Конкретно ваш случай:
- Multiple directives attempting to define a template or templateURL.

когда вы делаете replace: true, ваш шаблон содержит только один элемент - super, и текущий элемент - sub, заменяется на super и у вас выходит так что две директивы ссылаются на один элемент. В свою очередь Super имеет свой темплейт, и происходит конфликт. Если бы там небыло темплейта - все было бы хорошо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы