Javascript 如何在AngularJs中将函数处理程序从控制器传递到指令隔离范围?

Javascript 如何在AngularJs中将函数处理程序从控制器传递到指令隔离范围?,javascript,angularjs,Javascript,Angularjs,我在控制器中具有以下功能: angular.module('app').controller('BodyController', function(){ this.click = function(message){ alert(message); } }) 我想将此函数传递到指令的隔离作用域中,用一些特定的参数调用它,如下所示: angular.module('app').directive('custom', function(){ retu

我在控制器中具有以下功能:

  angular.module('app').controller('BodyController', function(){
    this.click = function(message){
      alert(message);
    }
  })
我想将此函数传递到指令的隔离作用域中,用一些特定的参数调用它,如下所示:

  angular.module('app').directive('custom', function(){
    return {
      restrict: 'A',
      scope: {
        text: '@',
        click: '&click'
      },
      link: function(scope, element){
        //...
        scope.click('Hello, Plunker!');
        //...
      }
    }
  })
我这样传递函数:

<h1 custom text="Hello Plunker!" click="ctrl.click"></h1>

以下是一个例子:

未调用该函数。我错过了什么


提前感谢

通过使用
单击:'&click'
(可以缩短为只
单击:'&
),您说的是“使
在内部作用域上单击
,在
'click'
属性中执行表达式”。这意味着您需要实际调用表达式中的方法,而不仅仅是指向它

<h1 click="ctrl.click()">...</h1>

或者只使用@michael zuchetta提供的解决方案,这对我来说是新的:)

您可以执行以下操作

 angular.module('app').directive('custom', function(){
    return {
      restrict: 'A',
      scope: {
        text: '@',
        click: '=click'
      },
      link: function(scope, element){
      //  console.dir(scope.click);
      element.bind("click",function(){

         scope.click('Hello, Plunker!');
      });

        element.text('Hello, Plunker!');
      }
    }
  })
在这里,您可以通过单击从父作用域获得click函数:'=单击'

并绑定该函数以单击元素

这是plnkr

或者您可以像这样将参数传递到指令中

这是一个解决方案:

<h1 custom text="Hello Plunker!" click="click(message)"></h1>
这是一个工作示例:

Edit:Nevermind,打开你的plunker,不起作用。在这种情况下,我如何从指令中传递一个参数来单击函数?我已经编辑了答案以包含这一点(并删除了我关于不可能的无知评论)。
<h1 custom text="Hello Plunker!" click="click(message)"></h1>
 scope.click({message: "Hello Plunker:"});