在父控制器上调用在 child指令中声明的函数。
父控制器HTML
<div ng-click="testFunction()"></div>
父控制器js
$scope.testFunction = function(){
$scope.functionFromChildDirective()
}
子指令js
function TestDirective() {
return {
restrict: 'EA',
scope: {
},
templateUrl: '',
controller: function($scope) {
"ngInject";
$scope.functionFromChildDirective = function(){
console.log("TEST")
}
}
}
}
export default {
name: 'testDirective',
fn: TestDirective
};
答案 0 :(得分:1)
只需删除空作用域减速度,就可以通过定义它来创建新的隔离作用域。如果不在指令定义对象中声明作用域,它将仅继承父作用域。但是,使用这种方法时,子指令只能使用一次(即不能重复使用),因为的每个实例都将覆盖$ scope.functionFromChildDirective属性。
答案 1 :(得分:1)
使用ng-ref
directive将控制器绑定到父变量:
<test-directive ng-ref="testAPI">
</test-directive>
function TestDirective() {
return {
restrict: 'EA',
scope: {
},
templateUrl: '',
controller: function() {
this.testFn = function(){
console.log("TEST")
}
}
}
}
调用它:
<div ng-click="testAPI.testFn()"></div>
ngRef
指令告诉AngularJS将组件(或指令)的控制器分配给当前作用域中的给定属性。
有关更多信息,请参见AngularJS ng-ref Directive API Reference。