Keeping two arrays one for delete and one for insertion seems a good idea to me and these arrays can be easily maintained with $watch where you can check old and new value. For example:-
var scope = $rootScope;
scope.$watch('petsArray', function(newValue, oldValue) {
if ( newValue !== oldValue ) {
//Do your changes
}
});
var scope = $rootScope; scope.$watch('petsArray', function(newValue, oldValue) { if ( newValue !== oldValue ) { //Do your changes } }); SendingSending requests on every insert and delete will increase the number of hits on the server.