传入Angular指令的调用函数返回函数而不是调用它

时间:2014-06-11 19:33:41

标签: javascript angularjs

我想在指令的scope参数中使用&将函数传递给指令:

.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')
}

为什么不调用该函数?

1 个答案:

答案 0 :(得分:2)

&没有将函数传递给指令,它传递一个表达式。在该表达式中,您需要调用函数:

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

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