2015-04-07 4 views
0

Я учусь о директивах в AngularJS, и я наткнулся на этот код:AngularJS Директивы изолированных областей

var app = angular.module('app', []); 
//creating custom directive syntax 
app.directive("myDir", function() { 
return { 
     restrict: "E", //define directive type like E = element, A = attribute, C = 
     class, M = comment 
     scope: { //create a new child scope or an isolate scope 
    title: '@' //@ reads the attribute value, 
//= provides two-way bindi 

Мои вопросы:

Согласно кодексу, «сфера» атрибута, по-видимому, используется для создать либо дочернюю область, либо изолированную область. Как мы тогда различаем, если мы хотим, чтобы область действия этой директивы была изолирована или нет? Если я хочу только иметь дочернюю область, но не изолирован, как бы мне это сделать?

Изолированный означает, что изолированный объем, который мы создаем, не может получить доступ к переменным из родительской области, не так ли?

Поля родителя по умолчанию не могут получить доступ к переменным от дочернего элемента, но ребенок может получить доступ к переменным родителя, если этот не изолирован, правильно?

И последний вопрос, если мы определяем атрибут 'controller' для указания контроллера для этой директивы, эта директива будет по умолчанию обладать контроллером?

Спасибо!

+1

Ваше понимание изолированных областей и областей родитель-ребенка верно. «Контроллер» для директивы будет иметь такую ​​же '$ scope', что и директива. – Cirdec

ответ

1

Установить scope: true, чтобы получить новый охват ребенка, который не изолирован.

От angular-js docs:

scope

Если установлено true, то новая область будет создана для этой директивы. Если несколько директив на одном элементе запрашивают новую область, то создается только одна новая область видимости . Новое правило области не применяется для корня шаблона , так как корень шаблона всегда получает новую область .

Если установлено значение {} (объект hash), то создается новая область «изоляция». Область «изолировать» отличается от обычной области видимости тем, что она не прототипически наследуется от родительской области. Это полезно, когда создает повторно используемые компоненты, которые не должны случайно считываться или изменять данные в родительской области.

Смежные вопросы