调用function passed into Angular指令返回该函数,而不是调用它

Calling function passed into Angular directive returns the function rather than calling it

本文关键字:调用 函数 返回 passed function into Angular 指令      更新时间:2023-09-26

我想在指令的作用域参数中使用&将一个函数传递给指令:

.directive('myDirective', function(){
  return {
    scope: {
      'fn': '&',
    },
    link: function(scope,el, attrs){
      console.log(scope.fn());
    }
  }
});

然后调用link中的函数并记录返回值。

在模板中,我传递了一个函数,它应该只是警告"ok"到指令:

<div ng-controller="MyController">
    <div my-directive fn="myFn"></div>
</div>

代码在这个Plunkr中,但是它记录函数而不是调用它:

function (){
    alert('ok')
}

为什么不调用函数?

&不传递一个函数到指令,它传递一个表达式。在该表达式中,您需要调用以下函数:

<div my-directive fn="myFn()"></div>

当只做myFn时,Angular将计算表达式并只返回函数的值。