为什么NG-风格不为自定义指令相同的元素上工作?(Why does ng-style not wor

2019-08-17 14:55发布

我想申请上的自定义指令标签的NG-style属性,有点像这样:

<my-directive ng-style="myStyle"></my-directive>

在控制器内,我有:

$scope.myStyle = {
    "background": "red"
}

这似乎并没有工作,虽然。 当我检查HTML“myStyle的”没有得到呈现。 当我申请定期DIV相同NG式标签也无法正确显示。

为什么不NG-风格的自定义指令标签的工作?

Answer 1:

你的指令有可能定义一个分离范围: scope: { ... } 在这种情况下,该元素上定义的所有指令将使用分离范围。 因此,吴式将寻找物业myStyle在隔离范围,这不存在。

以上,灰线显示$父母,虚线表示原型继承。 范围004是您的分离范围。 范围003是你的控制器范围。 NG-风格将寻找myStyle范围004,找不到的话,那么它会按照虚线和范围寻找它,而不是在那里找到它的。

通常情况下,你不希望使用创建具有相同元素的其他指令沿分离范围的指令。 您有几种选择:

  1. 使用scope: true ,而不是在你的指令的分离范围。 然后,当NG-风格看起来为myStyle范围004和没有找到它,它会然后按照虚线(如下图),发现它在父范围:
  2. 采用ng-style="$parent.myStyle"在你的HTML访问myStyle父作用域属性(即按照第一张照片的灰线)。


文章来源: Why does ng-style not work on the same element as a custom directive?