AngujarJs - ng-repeat + instancia.$remove no actualiza la vista
-
21-12-2019 - |
Pregunta
Tengo dos funciones:Uno para eliminar datos y otro para actualizar datos.Los datos provienen de Resource.query().
Estoy usando ng-repeat
para repasar cada elemento de la colección.Dado que cada elemento es un objeto de recurso, supongo que debería poder aplicar $save, $remove, ...operaciones.
El HTML podría ser tan simple como:
<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>
¿Por qué si lo hago?
// Arg: data is a Resource object from the collection
$scope.remove = function(data){
data.$remove(); // <----- THIS DOES NOT MODIFY THE VIEW
}
Pero esto es actualizar correctamente los datos:
// 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
});
}
¿Por qué uno de ellos tiene algún efecto en la vista pero no el que involucra la operación $remove?¿Por qué?
Solución
En lo que entiendo
$ eliminar
es solo un método de eliminación http que se llama a su recurso reparador.
Otros consejos
Para eliminar el data
objeto de la vista, creo que puedes eliminarlo de la vista. data_collection
formación. Vea cómo eliminar un objeto de una matriz.
Sin embargo, si aún necesita llamar http DELETE
para eliminar eso data
objeto de su base de datos o algo así, también deberá hacerlo.