想象一下这些指令的使用(在一个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的建议修改了它。它似乎现在有效!
答案 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
相关位:
theFunction
而非theFunction()
fun()(args)
而不是fun(args)
我知道,很奇怪,对吧?我确定那里有些事情发生了。我刚才问了一个关于它的问题,但没有得到回应。