2

Suppose I have a table like this:

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

What is the right way to have objectEdit notified which entry in objects is being referenced here?

Sorry, AngularJS newb.

4

2 に答える 2

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
}

呼び出された関数コンテキストのプロパティ「アイテム」は、要素を関数に渡した場合でも常に使用できるため、オブジェクトをパラメーターとして渡さないことをお勧めします。

于 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 に答える