angularjs - 过滤后从列表中删除项目

标签 angularjs angularjs-ng-repeat

我有以下问题:

我创建了一个列表,允许用户从列表中删除项目,如下所示:

enter image description here

当用户单击垃圾桶图标时,该项目将被正常删除。 问题是当用户使用顶部的过滤器时。

enter image description here

在这种情况下,如果我删除编号 6565(原始列表中的索引 4,过滤列表中的索引 1),则删除的项目位于原始列表的索引 1 上,导致删除编号为 #564456 的寄存器

这是我点击后的删除调用:

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

这是我的 html 模板:

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

我还尝试使用代码:$scope.ownsCoupons.splice(coupon, 1);但没有成功。

有人知道如何解决这个问题吗?

我使用以下引用进行编码:AngularJS How to remove an Item from scope

[编辑]

我为此创建了一个 Plunker:http://plnkr.co/edit/Fhxp6uZyTJCY05CAQ7yA?p=preview

最佳答案

正如 @pkozlowski.opensource 所提到的,您不能依靠 $index 以这种方式识别数组中的项目。我将进行以下更改:

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);
    }
}

这是一个正在工作的 Plunker:http://plnkr.co/edit/b0b2cYGsM5wtw8hIrQB5?p=preview

关于angularjs - 过滤后从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16266712/

相关文章:

javascript - tr-ng-grid 不遵守顺序

javascript - 在 angularJS 中集成验证码的最佳方法

javascript - 为什么我应该选择在 AngularJS 中使用服务而不是工厂?

javascript - 从 json 创建表

javascript - 如果源列表是对象数组,如何在 ng-model 中存储选定的值?

javascript - safari 上的 ngFileUpload 发布空文件

javascript - 针对 Angular 1 进行编码,以便最轻松地升级到 Angular 2?

javascript - 检查 ng-click 按钮是否已经被点击

javascript - AngularJS - 表的嵌套 ng-repeat

javascript - 如何组合angularjs模块?