如何在没有隔离范围的情况下分隔范围?

时间:2015-06-17 19:23:11

标签: javascript angularjs angularjs-directive isolate-scope

隔离范围很不方便,因为该指令停止从父作用域继承。

所以现在当我想在同一范围内使用相同的指令时,我使用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>

这样两个指令的属性就不会混淆,而不必诉诸隔离范围。

到目前为止,我还没有注意到这种方法有任何问题,但看起来确实很糟糕。 有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用:

scope: true

但是,如果您采取这种方法,我想指出一个谨慎的方面: 如果由此指令创建的继承(即新范围)通过“点击”更改对象的属性,则范围上的任何基于对象的属性都是如此。 (例如someObj.name =&#39;一些新值&#39;)然后这也将反映在父范围内。 这方面的例子可以在这里看到:

http://plnkr.co/edit/A1hNG5EUr8vcCNOAEp7P?p=preview

因此我同意采用隔离范围方法,通过&#39; @&#39;,&#39; =&#39;等传递您需要的任何属性是最好的。