繁体   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