如何从子指令的链接函数调用父指令链接函数

时间:2015-09-14 19:06:23

标签: javascript angularjs angularjs-directive

我有两个指令,directiveAdirectiveB都有link个函数。如何从directiveA调用属于directiveB的函数?

到目前为止我设置代码的方式是:

angular.module('myApp').directive('directiveA', function () {
    return {
        templateUrl: 'directiveA.html',
        link: function (scope) {
            scope.directiveAAlert = function () {
                alert('This is A');
            }
        }
    }
});

angular.module('myApp').directive('directiveB', function () {
    return {
        scope: {
            onButtonClicked: '='
        }
        templateUrl: 'directiveB.html',
        link: function (scope) {
            scope.showAlert = function () {
                scope.onButtonClicked();
            }
        }
    }
});

directiveA.html

<directive-b onButtonClicked='directiveAAlert'></directive-b>

directiveB.html

<button ng-click='showAlert()'></button>

但是当我点击按钮时,我收到错误TypeError: scope.onLogInButtonClicked is not a function at Scope.link.scope.showAlert

如何从child指令中简单地定义和调用同一个函数?

1 个答案:

答案 0 :(得分:1)

您需要使用指令的require选项,其中您可以提及其他指令将位于同一元素上,或者它可能是我的父级使用指令API中^属性内的require。使用require: ^parentDirective时,您可以访问需要链接函数parentDirective的{​​{1}}控制器。

此外,您需要通过替换其cammelcase案例来更正模板html,该模板应具有childDirective属性。

<强> directiveA.html:

-

<强> directiveB.html

<directive-b on-button-clicked='directiveAAlert()'></directive-b>

<强>代码

<button ng-click='showAlert()'></button>