2014-11-01 82 views
3

想知道是否有人可以解釋當前行爲。Angularjs - 關於元素的多個指令,其中一個是隔離範圍

我有一個隔離範圍指令,稱之爲dirA。然後我再提出一個指令,dirB。期待第二個指令來獲得隔離指令創建的每個範圍。

dirB獲取控制器範圍。爲什麼它不會得到dirA爲該元素創建的相同隔離範圍?

感謝您的任何幫助。我真的沒有任何代碼,只是好奇。如果任何人需要兩個小指令和一些HTML來幫助形象化我當然會。謝謝。

回答

6

你觀察到的是正確的,這種行爲是有目的的。

當指令請求隔離範圍時,AngularJS專門爲該指令創建一個範圍,而不是,用於聲明指令的元素。換句話說,隔離是每個指令,而不是每個元素。這使得編碼可重複使用的和獨立的指令比如​​果一個人有防備從其他指令分離範圍的使用不當容易得多。

在同一元素上聲明的所有其他指令共享外部作用域。 (另外值得一提的是,這些指令甚至不能要求自己的範圍,孤立的或沒有。雖然這種行爲是不是之前的1.3保證由於錯誤,已經是fixed 1.3)。