隔离范围很不方便,因为该指令停止从父作用域继承。
所以现在当我想在同一范围内使用相同的指令时,我使用ng-if
来分隔指令范围,如下所示:
<some-directive
ng-if="true"
var1="'wtva'"
var2="{{wtv2a}}"
var3="wtv2a"
></some-directive>
<some-directive
ng-if="true"
var1="'wtvb'"
var2="{{wtv2b}}"
var3="wtv2b"
></some-directive>
这样两个指令的属性就不会混淆,而不必诉诸隔离范围。
到目前为止,我还没有注意到这种方法有任何问题,但看起来确实很糟糕。 有更好的方法吗?
答案 0 :(得分:1)
如评论中所述,您可以使用:
scope: true
但是,如果您采取这种方法,我想指出一个谨慎的方面: 如果由此指令创建的继承(即新范围)通过“点击”更改对象的属性,则范围上的任何基于对象的属性都是如此。 (例如someObj.name =&#39;一些新值&#39;)然后这也将反映在父范围内。 这方面的例子可以在这里看到:
http://plnkr.co/edit/A1hNG5EUr8vcCNOAEp7P?p=preview
因此我同意采用隔离范围方法,通过&#39; @&#39;,&#39; =&#39;等传递您需要的任何属性是最好的。