Если я правильно понял, то, что вы хотите достичь, - это новая область, наследующая все родительские элементы. Это легко сделать.
По умолчанию директива использует родительский объем, но вы можете сделать две разные вещи:
scope: {} // Isolated scope
или:
scope: true // new scope inheriting from parent
Так с позже, вы будете иметь все родительская сфера имеет но вы можете установить там новый материал, и родитель не узнает. Пример:
http://plnkr.co/edit/oL5ALPvkEzkiXSuOSNnE?p=preview
Я надеюсь, что это то, что вы просили.
EDIT: Я отредактировал плункер.Идея с новыми областями, которые унаследованы от других является:
Если родитель имеет примитивный, как name
ребенок унаследует его, но если вы делаете что-то вроде:
childScope.name = ".."
вы не изменяете родитель name
, вы затеняя его, AKA создает новый name
, который скроет родителя name
. это означает, что родитель никогда не узнает, изменил ли ребенок name
.
foo
- это то, что создано в новом детском пространстве, это означает, что родитель никогда не узнает.
user
не является примитивным, он является объектом и, когда ребенок изменяет свой name
, не затенять весь user
, это просто изменение его значения:
childScope.user.name = "Fox"
Это получение user
ссылается и изменяет его значение, не меняет весь user
, так что вы не затеняете его. Если вы делаете:
childScope.user = { name: 'Foo' };
Затем вы создаете целую user
, AKA вы создаете новую ссылку, так что будет тенью родителя user
и родитель-потомок этого объекта будет конца.
Это то, что мы называем dot rule
.
Почему вы хотите получить доступ ко всей ** переменной «области» контроллера и одновременно определить изолированную область? –
http://jsbin.com/EyareCo/1/edit – KoIIIeY