使用参数执行范围绑定函数

时间:2013-08-19 01:18:01

标签: angularjs angularjs-scope

如果我在指令中有这样的函数:

 scope: {
      loadChildren: "&"
 },

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

$scope.loadChildren(param1, param2);

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

有没有办法像这样传递它们?

编辑:rodyhaddad的回答

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

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

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

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

1 个答案:

答案 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