0

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

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

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

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

4

1 回答 1

1

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

scope: true

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

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

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

于 2015-06-18T02:39:03.590 回答