Remove item from list after filtering

别等时光非礼了梦想. 提交于 2019-12-12 08:22:43

问题


I have the following issue:

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

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

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:


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



来源:https://stackoverflow.com/questions/16266712/remove-item-from-list-after-filtering

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!