#angularjs #scope
#angularjs #область действия
Вопрос:
Я испытываю некоторые проблемы с пониманием того, почему angular создает две области для некоторых моих директив. Мой исходный код беспорядочный и состоит из множества «временных» разделов, поэтому я создал plnkr, чтобы проиллюстрировать только проблему, с которой я сталкиваюсь. Вот ссылка:
http://plnkr.co/edit/gKMcCyRlGHwuKAQ6te76?p=preview
(пожалуйста, имейте в виду, что код приведен только для иллюстрации)
[Моя проблема]
выполнение простого примера приводит к созданию 5 областей.
1. Область 002 — я считаю, что эта область создана для использования в качестве корневой области, когда angular сталкивается с директивой ng-app.
2. Область 003 — я считаю, что эта область создается как область контроллера. В моем случае область действия HomeController.
3. Область 004 — я считаю, что эта область создается при анализе angular моей групповой директивы. Поскольку директива определена с помощью «scope: true», то эта область создается для нее для хранения своих моделей. В этой области можно получить доступ к идентификатору раздела (который устанавливается на этапе предварительной ссылки в коде директивы).
4. Область 005 — я понятия не имею, почему angular создал эту область для меня.
5. Область 006 — эта область создается для моей директивы testInput. Родительским элементом этой области является область 005.К сожалению, эта область совершенно не знает о информации, хранящейся в области 004, следовательно, в этой области SectionID не определен.
[Мои ожидания]
Ну, я ожидал, что область 005 будет отсутствовать, а область 006 будет дочерней областью области 004. Что мне нужно, так это установить некоторую информацию в области действия моей групповой директивы, а затем получить доступ к этой информации из элементов, вложенных внутри группы.
[Мой вопрос]
Кто-нибудь знает, почему Scoope 005 создается в первую очередь? Я думаю, что моя проблема возникает из-за моих плохих знаний о том, как angular управляет областями, но из информации, которую я нашел и прочитал в сети, я не смог найти ответ.
Спасибо за ваше время!
Ответ №1:
Директива group имеет transclude: true
, и transclusion создаст область «transcluded», вот Scope 005
и все .
Комментарии:
1. Хорошо, я это понимаю. Таким образом, область 005 является братом области 004. Тогда мой вопрос таков: возможно ли в области 004 иметь братьев и сестер, отличных от области 005.