Ответ 1
Ваша директива, вероятно, определяет область выделения: scope: { ... }
. В этом случае все директивы, определенные для этого элемента, будут использовать область изоляции. Поэтому ng-style будет искать свойство myStyle
в области изоляции, которого не существует.
Выше, серые линии показывают $parents, пунктирные линии показывают прототипное наследование.
Область охвата 004 - это область выделения. Объем 003 - это область вашего контроллера. ng-style будет искать myStyle
в области 004, а не найти его, затем он будет следовать пунктирной линии и искать ее в Scope, а не искать там.
Обычно вы не хотите использовать директивы, которые создают область изоляции вместе с другими директивами одного элемента. У вас есть несколько вариантов:
- используйте
scope: true
вместо области выделения в вашей директиве. Затем, когда ng-стиль ищетmyStyle
в области 004 и не находит его, он будет следовать по пунктирной линии (на рисунке ниже) и найти ее в родительской области: - используйте
ng-style="$parent.myStyle"
в вашем HTML для доступа к свойствуmyStyle
в родительской области (т.е. следуйте по серой строке на первом снимке).