我有一個叫做dropDownSortMenu
的子指令。此子指令中的元素具有ng-click
函數。執行此功能後,我想調用父指令customTable
的功能。從子指令調用父指令中的函數
的plnkr位於:http://plnkr.co/edit/7b2mce9jsAXmJpfKjgdx
我有一個叫做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
service docs。
感謝約什..這部作品 – runtimeZero
哦,天哪,你是好很多:) –