Angularjs - NG-Repeat + экземпляр. $ Удалить не обновляет просмотр

StackOverflow https://stackoverflow.com//questions/24015009

  •  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 из вашей базы данных или что-то, вам нужно будет делать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top