如何将函数传递给ng-repeat中的angular指令(arg未定义)?

时间:2015-03-09 06:11:34

标签: angularjs angular-directive

父指令:

<autosuggest
    click-match="addTag(tag)">
</autosuggest>

addTag函数在父控制器中定义。它被调用,但参数未定义。

以下是<autosuggest>实施:

scope: {
    clickMatch: '&'
}

在视图中:

<li ng-repeat="match in matches">
    <span ng-click="clickMatch(match)">{{match.name}}</span>
</li>

clickMatch函数正在调用父{4}个函数,但参数addTag(tag)未定义。

1 个答案:

答案 0 :(得分:1)

通过&传递给指令的函数以修改的形式出现在隔离的作用域上。他们采用了

键值对象
variableNameInExternalTemplate: expressionInIsolatedScope

在您的情况下,密钥为tag且值为match,因此您的ng-click属性应如下所示

<span ng-click="clickMatch({tag: match})"></span>

如果您还希望从点击中传递$event,则可以使用$event变量

进行相同操作
<span ng-click="clickMatch({tag: match, $event: $event})"></span>

确保将$event添加到使用该指令的模板中的参数列表

<autosuggest click-match="addTag(tag, $event)"></autosuggest>