将参数添加到ng
我有一个简单的循环与ng-repeat
像这样:
<li ng-repeat='task in tasks'>
<p> {{task.name}}
<button ng-click="removeTask({{task.id}})">remove</button>
</li>
控制器$scope.removeTask(taskID)
有一个函数。
据我所知,Angular将首先渲染视图并用一个数字替换插值{{task.id}}
,然后在点击事件中,将评估ng-click
字符串。
在这种情况下, ng-click
完全获得预期的结果,即: ng-click="removeTask(5)".
然而......它没有做任何事情。
当然,我可以编写代码从$tasks
数组或甚至DOM获取task.id
,但这看起来不像Angular方式。
那么,如何在ng-repeat
循环内添加动态内容到ng-click
指令呢?
代替
<button ng-click="removeTask({{task.id}})">remove</button>
做这个:
<button ng-click="removeTask(task.id)">remove</button>
请看这个小提琴:
http://jsfiddle.net/JSWorld/Hp4W7/34/
有一件事情真的让我感到困扰,当时我在浏览器中检查了这个html,而不是将它扩展为如下形式:
<button ng-click="removeTask(1234)">remove</button>
我看见:
<button ng-click="removeTask(task.id)">remove</button>
但是,后者的作品!
这是因为你处于“角度世界”,当在ng-click =“”时,角度准备好了解task.id,因为你在模型中。 不需要使用数据绑定,如{{}}。
此外,如果您想传递任务对象本身,您可以:
<button ng-click="removeTask(task)">remove</button>
另外值得注意的是,对于在搜索中发现这种情况的人来说,这是......
<div ng-repeat="button in buttons" class="bb-button" ng-click="goTo(button.path)">
<div class="bb-button-label">{{ button.label }}</div>
<div class="bb-button-description">{{ button.description }}</div>
</div>
请注意ng-click
的值。 传递给goTo()
的参数是绑定对象( button
)属性的字符串,但不包含在引号中。 看起来像AngularJS为我们处理。 我挂了几分钟。
下一篇: Understanding the transclude option of directive definition?