Удалить элемент из списка после фильтрации
У меня есть следующая проблема:
Я создал список, который позволяет пользователю удалить элемент из списка, как показано ниже:
![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
Ответы
Ответ 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