Использование scope: { ... }
в директиве вводит область выделения, которая не прототипически наследуется от ее родительской области. Но я всегда использовал его по другой причине: удобный способ объявить атрибуты HTML с двусторонней привязкой данных:
scope: {
attr1: '=',
attr2: '?='
}
Чтобы получить неизолированную область видимости, вы должны использовать scope: true
, что не дает возможности объявить такие атрибуты. Теперь мне нужна директива с неизолированной областью, но с двухсторонней привязкой. Какой лучший способ достичь этого?
Пример: Мой пример использования выглядит примерно так: в представлении outer-directive
:
<div ng-repeat="e in element">
<inner-directive two-way-attr="e.value"></inner-directive>
</div>
Но inner-directive
находится в том же модуле, что и outer-directive
. Он не должен быть инкапсулирован с областью изоляции. На самом деле, мне нужно использовать наследование $scope
для других целей, поэтому область выделения не является опцией. Это просто, что использование атрибута HTML для установления этой двусторонней связи чрезвычайно удобно.