AngularJS - NG-REPEAT + istanza. $ Rimuovi non aggiorna la visualizzazione
-
21-12-2019 - |
Domanda
Ho due funzioni: una per eliminare i dati e un altro per aggiornare i dati.I dati provengono da una risorsa.Query ().
Sto usando ng-repeat
per andare su ogni elemento nella raccolta.Dal momento che ogni elemento è un oggetto risorsa, immagino che dovrei essere in grado di applicare $ Salva, $ Rimuovi, ... Operazioni.
L'HTML potrebbe essere semplice come:
<tr ng-repeat="data in data_collection">
<td>
<a class="btn btn-info" ng-click="togglePublish(data,'country')">RELEASE</a>
</td>
<td>
<div>
<button class='btn btn-danger' ng-click="remove(data)">Delete</button>
</div>
</td>
</tr>
.
Perché se faccio:
// Arg: data is a Resource object from the collection
$scope.remove = function(data){
data.$remove(); // <----- THIS DOES NOT MODIFY THE VIEW
}
.
Ma questo aggiorna correttamente i dati:
// Arg: original_data is a Resource object from collection
$scope.togglePublish = function(original_data, country){
// Deep copy
var copy = angular.copy(original_data);
// Modifications over the copy
copy = toogleRegionPublication(copy, country);
Resource().update(copy).$promise.then(function(){
// If update was taken, then update view value
original_data.regions = copy.regions; // <--- THIS MODIFIES THE VIEW
});
}
.
Perché uno di loro sta avendo qualche effetto sulla vista ma non quello che coinvolge il funzionamento $ Rimuovi?Perché?
Soluzione
per quanto ho capito
.$ Rimuovi
è solo un metodo di cancellazione HTTP che chiama sulla risorsa riposante.
Altri suggerimenti
Per rimuovere l'oggetto data
dalla vista Penso che puoi semplicemente rimuoverlo dall'array data_collection
. Vedi come rimuovere l'oggetto da array.
Tuttavia, se è comunque necessario chiamare http DELETE
per rimuovere quell'oggetto data
dal tuo database o qualcosa del genere, è necessario farlo anche.