Подтвердить что ты не робот

Удалить элемент из списка после фильтрации

У меня есть следующая проблема:

Я создал список, который позволяет пользователю удалить элемент из списка, как показано ниже:

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 Как удалить элемент из области

[EDIT]

Я создал Plunker для этого: http://plnkr.co/edit/Fhxp6uZyTJCY05CAQ7yA?p=preview

4b9b3361

Ответ 1

Как уже упоминалось @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