2013-07-02 59 views
4

角度是否爲其上有兩個指令的元素不創建隔離範圍是正確的,其中最高優先級指令沒有隔離範圍,低優先級指令呢?如果最高優先級指令沒有隔離範圍,那麼元素不會得到隔離範圍

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

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

如果你打開控制檯,你可以看到指令和控制的範圍的記錄。 noIsoScope指令沒有隔離作用域,優先級爲1. isoScope作用域指令有一個隔離作用域,但優先級爲0.當我獨立使用每個指令時,所有的工作都是例外。當我將它們一起使用時,isoScope指令顯示它是否使用控制器作用域(因爲基於日誌,它具有相同的$ id)而不是它自己的。

我是否必須確保每當我對元素使用多個指令時,如果其中一個具有隔離範圍,那麼它必須具有最高優先級?

回答

1

簡短回答

2條指令要求隔離範圍是一個父範圍沒有意義。這個想法是想想如何指令可以相互工作。如果父範圍指令的範圍是隔離範圍,它將如何正確工作?

我想角隊決定在這種情況下不給出警告(可能是一個錯誤)。

  • 如果較低優先級的需要分離範圍,這意味着它具有從父作用域的數據的嚴格要求
  • 如果較高優先級不需要範圍,這意味着它將繼承父範圍和潛在地使用該模板中的數據。

這是一個趕上22日的情況: 它沒有意義,非分離指令使用分離範圍,因爲它可能會依賴於一個事實,即它不是隔離。 同時,隔離指令很可能取決於它是隔離的事實。

Igor Minar,他在談論多個隔離範圍,但它同樣的問題基本上是:

我的建議是使用時要創建由模板支持的可重用組件隔離範圍。如果你想組合多個指令,你應該設計一個指令作爲主指令(使用模板),其他指令只是輔助指令(有些編程語言中的特徵或混入)。