2013-07-02 58 views
4

角度是否为其上有两个指令的元素不创建隔离范围是正确的,其中最高优先级指令没有隔离范围,低优先级指令呢?如果最高优先级指令没有隔离范围,那么元素不会得到隔离范围

我有以下plunker有2台指令和控制器:

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

如果你打开控制台,你可以看到指令和控制的范围的记录。 noIsoScope指令没有隔离作用域,优先级为1. isoScope作用域指令有一个隔离作用域,但优先级为0.当我独立使用每个指令时,所有的工作都是例外。当我将它们一起使用时,isoScope指令显示它是否使用控制器作用域(因为基于日志,它具有相同的$ id)而不是它自己的。

我是否必须确保每当我对元素使用多个指令时,如果其中一个具有隔离范围,那么它必须具有最高优先级?

回答

1

简短回答

2条指令要求隔离范围是一个父范围没有意义。这个想法是想想如何指令可以相互工作。如果父范围指令的范围是隔离范围,它将如何正确工作?

我想角队决定在这种情况下不给出警告(可能是一个错误)。

  • 如果较低优先级的需要分离范围,这意味着它具有从父作用域的数据的严格要求
  • 如果较高优先级不需要范围,这意味着它将继承父范围和潜在地使用该模板中的数据。

这是一个赶上22日的情况: 它没有意义,非分离指令使用分离范围,因为它可能会依赖于一个事实,即它不是隔离。 同时,隔离指令很可能取决于它是隔离的事实。

Igor Minar,他在谈论多个隔离范围,但它同样的问题基本上是:

我的建议是使用时要创建由模板支持的可重用组件隔离范围。如果你想组合多个指令,你应该设计一个指令作为主指令(使用模板),其他指令只是辅助指令(有些编程语言中的特征或混入)。