Когда Прицел установлен на ложное (также по умолчанию значения) в определении директивы, поведение области действия различается в зависимости от того, выполняете ли вы transclusion
или нет.
Если вы не используете transclude
, он в значительной степени использует родительскую область. Как если бы вы не использовали директиву и не создали связанный шаблон непосредственно на странице.
Fiddle
включение всегда создает дочерний объем, но он связан с родительской областью странным образом, когда сфера директивы является ложной. Вы можете «прочитать» родительскую область, но как только вы «напишите» на свойство, она больше не привязана к одному и тому же свойству родительской области, а теперь свойство в области дочерних объектов, если это свойство не является объектом.
Transcluded Fiddle
Child scope is the ones in green border.
Попробуйте изменить родительский объем первой. Введите что-то в поле ввода «var», вы увидите, что var var также изменится. Но когда вы меняете var в области дочерних объектов, это не меняет родительскую область, а изменение переменной var в родительской области не влияет на область содержимого, так как связь нарушается, когда вы написали var из области дочерних объектов. Это не относится к объектам (попробуйте то же самое на sp.var, вы увидите, что вы не можете сломать «связь»). По мнению разработчиков, это ожидаемое и/или предполагаемое поведение.
Отличное объяснение по этому вопросу Я нашел здесь: [Каковы нюансы объема прототипа/прототипного наследования в AngularJS?] (Http://stackoverflow.com/questions/14049480/what-are-the-nuances-of -scope-prototypal-prototypical-inheritance-in-angularjs/14049482 # 14049482) –