[英]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.