Событие удаления ngResource AngularJS

Я пытаюсь обновлять список ресурсов по мере того, как пользователь взаимодействует с ним. Используя AngularJS ngResource, я сначала получаю список, используя его метод query. Каждый ресурс имеет метод $remove (или $delete), верно? Но при запуске ресурс не удаляется из списка, возвращаемого из query.

Я знаю, что это требует многого, но я почти надеялся, что он просто сделает все за меня. Сохраните это, как я мог это сделать. Испускает ли сам ресурс какое-то событие? Есть ли удаленное свойство, которое я могу $watch? Как мне узнать, что ресурс был $remove создан, чтобы я мог соединить его из списка?

Спасибо.


person nicholas    schedule 22.05.2013    source источник
comment
Где тот код, о котором вы говорите?   -  person Jonathan Palumbo    schedule 23.05.2013
comment
Очень жаль, что он не справляется с этим сам. Казалось бы, очевидная вещь.   -  person Paul Rooney    schedule 22.01.2018


Ответы (2)


Вы должны использовать метод splice Array, чтобы удалить его ($index - это неявный индекс ng-repeat).

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

И затем в вашем HTML

<a ng-click="removeItem($index)">remove me</a>
person Ven    schedule 22.05.2013
comment
Это будет работать в большинстве случаев, но что произойдет, если на стороне сервера возникнет какая-то ошибка. Пользовательский интерфейс больше не будет отражать правильное состояние. - person testing123; 23.05.2013
comment
тогда вы можете передать это как обратный вызов, я думаю :) - person Ven; 23.05.2013

Просто используйте функцию обратного вызова успеха:

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

Для вас я предполагаю, что это будет что-то вроде:

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