i have table of json data, can sort various columns. when sort columns , click on button "delete" removes wrong one, $index isn't updated , don't know how fix it.
js code :
$scope.friends = [{name:'john', phone:'555-1212', age:10}, {name:'mary', phone:'555-9876', age:19}, {name:'mike', phone:'555-4321', age:21}, {name:'adam', phone:'555-5678', age:35}, {name:'julie', phone:'555-8765', age:29}]; $scope.predicate = 'age'; $scope.reverse = false; $scope.order = function(predicate) { $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; $scope.predicate = predicate; }; $scope.delete = function (friend, index) { $scope.friends.splice(index, 1); }; html code :
<table class="friend"> <tr> <th> <a href="" ng-click="order('name')">name</a> <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span> </th> <th> <a href="" ng-click="order('phone')">phone number</a> <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span> </th> <th> <a href="" ng-click="order('age')">age</a> <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span> </th> </tr> <tr ng-repeat="friend in friends | orderby:predicate:reverse"> <td>{{friend.name}}</td> <td>{{friend.phone}}</td> <td>{{friend.age}}</td> <td><button ng-click="delete(friend, $index)">delete</button></td> </tr> </table> plunker link :
just updated function in plunker.
till have object, don't use $index. use object instead
$scope.delete = function (friend) { $scope.friends.splice($scope.friends.indexof(friend), 1); }; this work.
Comments
Post a Comment