如果我在指令中有这样的函数:
scope: {
loadChildren: "&"
},
如何从我的控制器中调用它并传递参数?
$scope.loadChildren(param1, param2);
我的指令执行我传递的函数,但是我没有看到任何参数。
有没有办法像这样传递它们?
编辑:rodyhaddad的回答
rodyhaddad指明了方向并给出了将参数传递给绑定函数的正确格式。但是,为了使其正常工作,我还必须将参数键添加到我的HTML中,如下所示:
<example load-children="load(param1, param2)"></example>
然后在我的控制器上我可以看到参数:
$scope.load = function (param1, param2) {
debugger;
};
答案 0 :(得分:3)
当你这样做时
loadChildren: "&"
这是生成函数(source code)
的代码case '&': {
parentGet = $parse(attrs[attrName]);
scope[scopeName] = function(locals) {
return parentGet(parentScope, locals);
};
break;
正如您所看到的,无论您传递给loadChildren
的任何内容都将成为传递给locals
的{{1}}。
所以调用它的正确方法是:
$parse
如果你想要另一个例子,这里是事件指令(如$scope.loadChildren({
param1: param1,
param2: param2
});
)将ngClick
公开给他们的表达式的方式:source code