2

假设我有一个这样的表:

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

通知此处引用了哪个条目的正确方法是什么?objectEditobjects

抱歉,AngularJS 新手。

4

2 回答 2

8

编辑:在plunker创建了一个演示。

您可以使用预期的行为,例如:

<a href="#" class="btn btn-default" data-ng-click="objectEdit(object)">Edit</a>

然后在范围内有这个方法

$scope.objectEdit = function(item){
}

或者

没有在 click 函数中传递对象

<a href="#" class="btn btn-default" data-ng-click="objectEdit()">Edit</a>

并在范围内:

$scope.objectEdit = function(){
   this.item // access selected item
}

即使您将元素传递给函数,被调用函数上下文上的属性“item”始终可用,所以我建议不要将对象作为参数传递,我猜它不那么冗长。

于 2013-10-16T19:52:01.180 回答
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';
};
于 2013-10-16T19:45:34.680 回答