2

如果我在指令中有这样的功能:

 scope: {
      loadChildren: "&"
 },

如何从我的控制器调用它并传递参数?

$scope.loadChildren(param1, param2);

我的指令执行我传递的函数,但我没有看到任何参数。

有没有办法像这样通过它们?

编辑回复:rodyhaddad的回答

rodyhaddad 指出了将参数传递给绑定函数的正确格式。但是,为了使其正常工作,我还必须将参数键添加到我的 HTML 中,如下所示:

<example load-children="load(param1, param2)"></example>

然后在我的控制器上我可以看到参数:

$scope.load = function (param1, param2) {
    debugger;
};
4

1 回答 1

3

当你这样做

  loadChildren: "&"

这是生成函数的代码(源代码

case '&': {
  parentGet = $parse(attrs[attrName]);
  scope[scopeName] = function(locals) {
    return parentGet(parentScope, locals);
  };
  break;

如您所见,无论您传递给什么,都loadChildren将成为locals传递给$parse

所以正确的调用方式是:

$scope.loadChildren({
  param1: param1,
  param2: param2
});

如果您想要另一个示例,以下是事件指令(如ngClick)如何暴露$event于它们的表达式:源代码

于 2013-08-19T18:51:42.393 回答