2013-04-28 2 views
11

У меня есть следующий выпуск:Удалить элемент из списка после фильтрации

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

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

[EDIT]

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

+2

Вы не можете передавать на индексах, ссылок использование объектов вместо. Не знаете, почему сращивание не сработало для вас. Вам нужно разделить больше кода (в идеале, жить с plunker), чтобы люди могли вам помочь. –

+0

Спасибо вам за ответ! Я обновил вопрос с помощью плунжера. –

ответ

23

Как упомянуто @ 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

+0

Спасибо большое! отлично работал! –

+0

Эй, Брэндон, не могли бы вы объяснить, что делает (index! = -1) именно так? Благодарю. – LoveAndHappiness

+2

@LoveAndHappiness 'array.indexOf (item)' возвращает '-1', если' item' не найден в 'array'. Если 'index! = -1', то элемент был найден и может быть удален. –