以下是我的申请流程。我想从子指令
访问父控制器函数<div ng-controller="ParentController">
<first-directive></fist-directive>
</div>
在First Directive中另一个指令加载
<div ng-controller="FirstController">
<second-directive></second-directive>
</div>
来自第二指令调用父函数
<div ng-controller="SecondController">
<a ng-click="ParentFunction(2342)"></a>
</div>
ParentFunction()
中提供了 Parent Controller
。我想从second-directive调用该函数。
ParentController - &GT; FirstDirective - &GT; SecondDirective
如何根据我的情况从parent function
拨打SecondDirective
?
答案 0 :(得分:0)
使第一个指令和第二个指令继承父范围(不要为它们定义范围属性)。如果它们是隔离范围,则它们无法访问父范围。
然后在第二个指令中执行此操作 -
<div ng-controller="SecondController">
<a ng-click="$parent.$parent.ParentFunction(2342)"></a>
</div>
编辑: 如果指令具有隔离范围,因为OP已在此处进行了注释,那么您必须将该函数传递给指令,因此您的代码将变为这样
<div ng-controller="ParentController">
<first-directive function-to-call="parentFunction()"></fist-directive>
</div>
<div ng-controller="FirstController">
<second-directive function-to-call="functionToCall()"></fist-directive>
</div>
<div ng-controller="SecondController">
<a ng-click="functionToCall(2342)"></a>
</div>
在指令中你必须有一些像这样的范围的值
第一指令
scope: {
functionToCall: '&'
}
第二指令
scope: {
functionToCall: '&'
}