2013-05-22 5 views
5

Sto cercando di mantenere aggiornato un elenco di risorse in quanto un utente interagisce con esso. Usando un AngularJS ngResource inizialmente prendo l'elenco usando il suo metodo query. Ogni risorsa ha quindi un metodo $remove (o $delete), giusto? Ma quando viene attivato, la risorsa non viene rimossa dall'elenco restituito da query.AngularJS ngErrore origine evento

Questo è chiedere molto, lo so, ma stavo quasi sperando che avrebbe fatto tutto per me. Salvalo, come potrei realizzare questo. La risorsa stessa emette qualche tipo di evento? Ha una proprietà cancellata che posso $watch? Come potrei andare a sapere che una risorsa era $remove 'd in modo che io possa unire fuori dalla lista?

Grazie.

+0

Dov'è il codice a cui ti stai riferendo? –

+0

È un vero peccato che non lo gestisca da solo. Sembrerebbe una cosa apparentemente ovvia da fare. –

risposta

6

È necessario utilizzare il metodo Arraysplice per rimuoverlo ($index è l'indice implicito di ng-repeat).

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

E poi nel codice HTML

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

Questo funzionerà la maggior parte del tempo, ma cosa succede quando c'è un qualche tipo di errore sul lato server. L'interfaccia utente non rifletterà più lo stato corretto. – testing123

+0

quindi puoi passarlo come un callback, penso :) – Ven

2

basta usare la funzione di successo di callback:

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

per voi sono indovinando che sarebbe qualcosa di simile:

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