[英]Calling a function in a parent directive from child directive
我有一個名為dropDownSortMenu
的子指令。 此子指令中的元素具有ng-click
函數。 執行此函數后,我想調用父指令customTable
的函數。
plnkr位於此處: http ://plnkr.co/edit/7b2mce9jsAXmJpfKjgdx
我認為您已經非常接近使用正確的方法。 您已經有一個控制器,但是缺少兩件事:
this
) 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.