Remove item from list after filtering

2019-04-04 11:24发布

I have the following issue:

I've create a list that allow the user to delete an item from list, as following:

enter image description here

When user click on trash icon, the item is removed normally. The problem is when the user uses the filter on top.

enter image description here

In that case, if I delete the number 6565 (index 4 in original list, 1 on filtered list), the item deleted is on index 1 on original list, resulting on delete the register with number #564456

This is my delete call on click:

 $scope.deleteOwn = function (uuid) {
    console.log(uuid);
    var coupon = $scope.ownsCoupons[uuid];
    Coupon.delete({'id' : coupon.uuid}, function () {
        $scope.ownsCoupons.splice(uuid, 1);
    });
}

And this is my html template:

<td><a href="" ><i class="icon-trash" ng-click="deleteOwn($index)"></i></a></td>

I also try to use the code: $scope.ownsCoupons.splice(coupon, 1);without success.

Does anyone know how to fix that?

I've coded using the following reference: AngularJS How to remove an Item from scope

[EDIT]

I've created a Plunker to this: http://plnkr.co/edit/Fhxp6uZyTJCY05CAQ7yA?p=preview

1条回答
做个烂人
2楼-- · 2019-04-04 11:41

As mentioned by @pkozlowski.opensource, you can't depend on $index to identify an item in an array in this way. I would make the following changes:

HTML:

<td><a ng-click="deleteWish(coupon)"><i class="icon-trash"></i></a></td>

JS:

$scope.deleteWish = function (coupon) {
    var index = $scope.coupons.indexOf(coupon);
    if (index != -1) {
        $scope.coupons.splice(index, 1);
    }
}

Here is a working Plunker: http://plnkr.co/edit/b0b2cYGsM5wtw8hIrQB5?p=preview

查看更多
登录 后发表回答