Angularjs - NG-Repeat + экземпляр. $ Удалить не обновляет просмотр
-
21-12-2019 - |
Вопрос
У меня есть две функции: один для удаления данных и еще один для обновления данных.Данные поступают из Resource.Query ().
Я использую ng-repeat
, чтобы перейти на каждый элемент в коллекции.Поскольку каждый элемент является объектом ресурса, я думаю, что я должен быть в состоянии применить $ Save, $ Удалить, ... Операции.
HTML может быть так же просто, как:
<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>
.
Почему, если я сделаю:
// Arg: data is a Resource object from the collection
$scope.remove = function(data){
data.$remove(); // <----- THIS DOES NOT MODIFY THE VIEW
}
.
Но это правильно обновляет данные:
// 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
});
}
.
Почему один из них имеет некоторое влияние на вид, но не тот, который включает в себя операцию с удалением?Почему?
Решение
насколько я понимаю
$ Удалить
- это просто метод удаления HTTP, перейдите к вашему спокойному ресурсу.
Другие советы
Чтобы удалить объект data
с вида, который я думаю, вы можете просто удалить его из массива data_collection
. См. Как удалить объект из массива.
Однако, если вам все равно нужно позвонить в http DELETE
, чтобы удалить этот объект data
из вашей базы данных или что-то, вам нужно будет делать.