需要从嵌套指令angularjs调用父函数

时间:2017-09-28 13:00:27

标签: angularjs

以下是我的申请流程。我想从子指令

访问父控制器函数
<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

1 个答案:

答案 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: '&'
}