I prefer using promises instead of callbacks. promises is a new way to handle asynchronous processes. You can check the result using the promise immediately after it returns from the server.
//Controller myApp.controller('MyController', function MyController($scope, $log, myDataService) { $scope.entities = myDataService.getAll(); $scope.removeEntity = function (entity) { var promise = myDataService.deleteEntity(entity.id); promise.then( // success function (response) { $log.info(response); if (response.status == true) { $scope.entities.pop(entity); } }, // fail function (response) { $log.info(response); // other logic goes here } ); }; }); //DataService myApp.factory('myDataService', function ($log, $q, $resource) { return { getAll: function () { var deferred = $q.defer(); $resource('/api/EntityController').query( function (meetings) { deferred.resolve(meetings); }, function (response) { deferred.reject(response); }); return deferred.promise; }, deleteEntity: function (entityId) { var deferred = $q.defer(); $resource('/api/EntityController').delete({ id: entityId}, function (response) { deferred.resolve(response); }, function (response) { deferred.reject(response); }); return deferred.promise; } }; }); //Web API Controller public class MeetingController : BaseApiController { // .... code omited public OperationStatus Delete(int entityId) { return _repository.Delete(_repository.Single<MyEntity>(e => e.EntityID == entityId)); } }
Note. Services have built-in $ log, $ q, $ resource. Hope this helps :)
source share