在指令的onclick中,调用一个函数"指针"

时间:2014-08-20 01:05:32

标签: angularjs angularjs-directive

想象一下这些指令的使用(在一个HTML文件中):

<my-dir function="callMe()"/>
<my-dir function="someOtherFunction()"/>

这是指令的重要部分:

 .directive('myDir', function () {
    return {
        scope: {
            function: '&'
        },
    };
})

这是模板HTML:

<div ng-click="function(5)">click here</div>

这不起作用 - 虽然#function确实调用#callMe#someOtherFunction,但似乎没有办法传递参数。如何将方法传递给指令,以便指令可以调用函数并传递参数?

很明显,HTML可以直接引用#callMe。但是,该指令不适用于#someOtherFunction

编辑 - Here's a fiddle I was working on 。我用PSL的建议修改了它。它似乎现在有效!

2 个答案:

答案 0 :(得分:3)

尝试这种方式: -

在指令arg中指定参数的名称: -

<my-dir callback="func1(arg)"></my-dir>
<my-dir callback="func2(arg)"></my-dir>

在模板上提供键值对,其键名与函数的名称相同。

template:'<div ng-click="callback({arg:5})">click here</div>'

<强> Demo

除非您使用提供ng-onclick指令的其他角度组件,否则

ng-click应为ng-onclick。为指令元素使用结束标记。

答案 1 :(得分:1)

这是一个插件:

http://plnkr.co/edit/YQgijS?p=preview

相关位:

  • 我不知道为什么会这样,我觉得它表明这里有一些奇怪的东西和&amp;我还没有学到的范围。
  • 通过&amp;传递变量到指令时范围,通过theFunction而非theFunction()
  • 以ng-click方式调用该功能时,请拨打fun()(args)而不是fun(args)

我知道,很奇怪,对吧?我确定那里有些事情发生了。我刚才问了一个关于它的问题,但没有得到回应。