2013-05-22 11 views
5

Staram się, aby lista zasobów była aktualna, gdy użytkownik wchodzi w interakcje z nią. Używając AngularJS ngResource początkowo pobieram listę używając jej metody query. Każdy zasób ma teraz metodę $remove (lub $delete), prawda? Jednak po uruchomieniu zasób nie jest usuwany z listy zwróconej z query.Zdarzenie usuwania AngularJS ngResource

To dużo pytam, wiem, ale miałem niemal nadzieję, że zrobi wszystko dla mnie. Poza tym, jak mogłem to osiągnąć. Czy samo źródło emituje jakieś wydarzenie? Czy ma usuniętą właściwość, którą mogę $watch? Jak mógłbym wiedzieć, że zasób był $remove "d, więc mogę spisać go z listy?

Dzięki.

+0

Gdzie jest kod, do którego się odnosisz? –

+0

To prawdziwy wstyd, że nie radzi sobie z tym sam. Wydawać by się mogło, że to oczywiste. –

Odpowiedz

6

Musisz użyć metody Array 'splice, aby ją usunąć ($index to niejawny indeks ng-repeat).

$scope.removeItem = function (index) { 
    $scope.items[index].$delete(); 
    $scope.items.splice(index, 1); 
} 

A potem w HTML

<a ng-click="removeItem($index)">remove me</a> 
+0

To będzie działać przez większość czasu, ale co się stanie, gdy pojawi się jakiś błąd po stronie serwera. Twój interfejs użytkownika nie będzie już odzwierciedlał prawidłowego stanu. – testing123

+0

to możesz przekazać jako callback, myślę, że :) – Ven

2

Wystarczy skorzystać z funkcji sukces callback:

instance.$action([parameters], [success], [error]) 

Dla ciebie jestem domyślając się, że byłoby coś jak:

myResource.$delete([parameters], function() { 
    //delete was successful 
});