我有两个指令,directiveA
和directiveB
都有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指令中简单地定义和调用同一个函数?
答案 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>