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

how to separate scopes without 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>

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

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

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

scope: true

但是,如果您确实采用这种方法,我只想指出一个注意事项: 任何基于范围 属性 的对象,如果此指令创建的继承(即新范围)通过 'dotting' 更改对象上的 属性 (例如 someObj.name = 'some new value') 那么这也将反映在父范围中。 这方面的例子可以在这里看到:

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

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