AngularJS ngResource delete event

2019-06-21 10:09发布

问题:

I'm trying to keep a list of resources up to date as a user interacts with it. Using an AngularJS ngResource I initially grab the list using it's query method. Each resource then has a $remove (or $delete) method, right? But when fired, the resource isn't removed from the list returned from query.

This is asking a lot, I know, but I was almost hoping it would just do everything for me. Save that, how could I accomplish this. Does the resource itself emit some kind of event? Does it have a deleted property I can $watch? How would I go about know that a resource was $remove'd so I can splice it out of the list?

Thanks.

回答1:

You have to use Array's splice method to remove it ($index is ng-repeat's implicit index).

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

And then in your HTML

<a ng-click="removeItem($index)">remove me</a>


回答2:

Just use the success callback function:

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

For you I am guessing that would be something like:

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