2013-04-28 3 views
11

Mam następujący problem:usuń z listy po przefiltrowaniu

mam tworzyć listy, które pozwalają użytkownikowi usunąć element z listy, co następuje:

enter image description here

gdy użytkownik kliknij ikonę kosza, element jest usuwany normalnie. Problem występuje, gdy użytkownik używa filtra na górze.

enter image description here

W takim przypadku, jeśli mogę usunąć numer 6565 (wskaźnik 4 na pierwotnej liście, 1 na przefiltrowanej listy), pozycja usunięta jest na indeksie 1 na pierwotnej liście, powodując na usunąć rejestr z numerem # 564456

to mój kasowania wezwanie kliknij:

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

A to moja html szablonu:

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

Próbuję również użyć kodu: $scope.ownsCoupons.splice(coupon, 1); bez powodzenia.

Czy ktoś wie, jak to naprawić?

mam zakodowane przy użyciu następującego odniesienia: AngularJS How to remove an Item from scope

[EDIT]

Utworzyłem Plunker do tego: http://plnkr.co/edit/Fhxp6uZyTJCY05CAQ7yA?p=preview

+2

Nie można polegać na indeksach, referencje wykorzystanie obiektów zamiast. Nie wiem, dlaczego splice nie działały dla ciebie. Musisz udostępnić więcej kodu (najlepiej żyć z plunkerem), aby ludzie mogli ci więcej pomóc. –

+0

Dzięki za odpowiedź! Zaktualizowałem to pytanie za pomocą plunkera. –

Odpowiedz

23

Jak wspomniano przez @ pkozlowski.opensource, ty nie można polegać na $index w celu identyfikacji elementu w tablicy w ten sposób. Chciałbym wprowadzić następujące zmiany:

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

Powyżej znajduje się Plunker robocze: http://plnkr.co/edit/b0b2cYGsM5wtw8hIrQB5?p=preview

+0

Wielkie dzięki! działało idealnie! –

+0

Hej Brandon, czy mógłbyś wyjaśnić, co dokładnie robi (indeks! = -1)? Dzięki. – LoveAndHappiness

+2

@LoveAndHappiness 'array.indexOf (element)' zwraca '-1', jeśli' item' nie zostanie znaleziony w 'tablica'. Jeśli 'index! = -1', to element został znaleziony i można go usunąć. –