我有一个名为dropDownSortMenu
的子指令。此子指令中的元素具有ng-click
函数。执行此函数后,我想调用父指令customTable
的函数。
答案 0 :(得分:1)
我认为你已经非常接近使用正确的方法了。你已经有一个控制器,但有两件事缺失:
this
)require: '^customTable'
。 (^
用于表示我们正在寻找父指令的控制器。)现在在dropDownSortMenu
的链接功能中,您可以访问父控制器的上下文,并可以随心所欲地做任何事情。
答案 1 :(得分:0)
使用范围的事件调度程序; $emit(name, args)
用于将事件发送到父作用域,$broadcast(name, args)
将向下通过层次结构下发事件。
要捕获抛出的事件,请使用$on(name, listener)
个侦听器。
您也可以参考$scope.$parent
向上行(或$scope.$parent.$parent
等),但不推荐 - 您必须查找范围层次结构n
升级,使代码变得严格(如果更改范围嵌套级别,例如通过在某处添加ng-repeat
,该怎么办?)。
您还可以在指令中使用 transclusion (在适当的时候) - 这将允许您的模型驻留在指令的隔离范围之外,从而允许自然访问上面层次结构中的任何控制器(前提是没有孤立的范围。)
有关指令'tranclude
属性的说明,请参阅$compile
service docs。