假设我有一个这样的表:
<tbody>
<tr data-ng-repeat="object in objects">
<td><input type="checkbox" value="{{object.id}}" data-ng-checked="object.checked" data-ng-mode="object.checked"/></td>
<td>{{object.name}}</td>
<td><a href="#" class="btn btn-default" data-ng-click="objectEdit()">Edit</a> <a href="#" class="btn btn-default">View</a></td>
</tr>
</tbody>
正确通知objectEdit
在objects
中引用{{1}}中的哪个条目的方法是什么?
抱歉,AngularJS newb。
答案 0 :(得分:8)
修改:在plunker上创建了一个演示。
您可以使用预期的行为,例如:
<a href="#" class="btn btn-default" data-ng-click="objectEdit(object)">Edit</a>
然后在范围内有这个方法
$scope.objectEdit = function(item){
}
或强>
没有在点击功能中传递对象
<a href="#" class="btn btn-default" data-ng-click="objectEdit()">Edit</a>
并且在范围内:
$scope.objectEdit = function(){
this.item // access selected item
}
被调用函数上下文中的属性“item”始终可用,即使您将元素传递给函数,所以我建议不要将对象作为参数传递,我猜想它不那么冗长。
答案 1 :(得分:3)
您可以将其传递给函数:
ng-click="objectEdit(object)"
要从我的原始答案扩展(抱歉很短,因为它已在我的手机上得到解答),您可以在循环中将对象传递给您的函数。此外,有时它更有意义,特别是如果你有一个数组,当你在ng-repeat
中循环时传入索引:
ng-click="objectEdit($index)"
这允许我们拼接或编辑数组中的元素:
$scope.objectEdit = function(i) {
$scope.objects.splice(i,1); // if we want to remove it in a delete function
$scope.objects[i].name = 'new name';
};