我正在尋找關於何時以及爲什麼要在指令定義中使用「require」選項的指導原則,爲什麼不使用範圍進行通信 - 就像大多數時間一樣在Angular中? 它是如何突然出現在指令中,我要求控制器本身,而不是僅僅將事情附加到作用域?AngularJS中的指令(和其他部分)之間的通信
一般而言 - 有許多方式角指令/控制器/示波器之間的通信 -
- 範圍繼承。
- RootScope「發射」。
- 服務(工廠/服務/提供商)。
- 在指令中要求控制器。
- 在指令中要求新的範圍/隔離範圍/「正常」範圍。
- 更多?
雖然我理解他們是如何在技術上工作的,但我不清楚哪些指導原則決定使用哪一個以及爲什麼。
對於一些通用/高級別準則會很高興。謝謝。即,要創建具有指導自己的表單控件 -
謝謝馬克,我還會讀其他你討論過的指導。 「由於這些組件/指令都創建了隔離範圍,所以範圍繼承不是一種選擇。」即使在隔離範圍內,我們可以使用'@'或'='並獲得一些繼承,我猜這個問題仍然是繼承與範圍鏈中較高的選項卡/窗格衝突?或者我把它全部弄錯了? – Daniel 2013-05-09 17:31:52
@Daniel,true,'@'或者'='可以被使用,但是這需要'pane'指令通過HTML傳遞屬性 - 也就是說,需要爲每個指定'addPane()'方法使用窗格:''。所以在這裏使用'require'似乎是一個更清潔的方法。 –
2013-05-09 18:35:24