簡體   English   中英

從子指令中調用父指令中的函數

[英]Calling a function in a parent directive from child directive

我有一個名為dropDownSortMenu的子指令。 此子指令中的元素具有ng-click函數。 執行此函數后,我想調用父指令customTable的函數。

plnkr位於此處: http ://plnkr.co/edit/7b2mce9jsAXmJpfKjgdx

我認為您已經非常接近使用正確的方法。 您已經有一個控制器,但是缺少兩件事:

  1. 需要在父指令控制器的上下文中設置sort函數。 (即this
  2. 然后,您需要require: '^customTable' ^表示我們正在尋找父指令上的控制器)。

現在,在dropDownSortMenu的鏈接函數中,您可以訪問父控制器的上下文,並且可以做任何您想做的事情。

演示

使用范圍的事件分派器 $emit(name, args)用於將事件發送到父作用域,而$broadcast(name, args)將在整個層次結構中向下沉入事件。
要捕獲引發的事件,請使用$on(name, listener)監聽器。

你也可以同樣參考$scope.$parent向上行進鏈條(或$scope.$parent.$parent等),但不建議這樣 -你將不得不查找范圍層次n水平了,使代碼僵化(如果您更改范圍嵌套級別,例如通過在某處添加ng-repeat怎樣?)。


您還可以利用該指令transclusion(適當的時候) -這將使你的模型所在的指令的孤立的范圍之內,從而使在上面的層次結構(前提是沒有孤立的范圍的方式)的任何控制器的自然訪問。
有關指令的tranclude屬性的說明,請參見$compile服務文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM