父指令:
<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)
未定义。
答案 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>