1

I want to implement one generic error callback for all methods of my angularjs Resource, which will log "Default Error Handler Log".

My Resource:

currentNgModule.factory('StatusesResource', function($resource, $timeout){
    var StatusesResource = $resource(get_gui_url_param('company.employee.statuses', true), null, {
            get: {method: 'GET', isArray: true, headers: getGenericHttpHeaders()},
            create: {method: 'POST', isArray: false, headers: getGenericHttpHeaders()},
            $update: {
                method: 'PATCH',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true)
            },
            delete: {
                method: 'DELETE',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true)
            }
        }, false);

    return StatusesResource;
});

For example, in result of execution:

$log.debug("Calling Resource Get")
StatusesResource.get({employee_pk: pk},
    function(){$log.debug("success")},
    function(){$log.debug("Get error")}
);

$log.debug("Calling Resource Delete")
StatusesResource.get({pk: pk},
    function(){$log.debug("success")},
    function(){$log.debug("Delete error")}
);

I want to get following log:

Calling Resource Get
Default Error Handler Log
Get error
Calling Resource Delete
Default Error Handler Log
Delete error

Hot to implement this default(initial, generic) callbacks(success, error) for ng-resource?

KopBob
  • 1,051
  • 1
  • 9
  • 15

1 Answers1

0

You can do this using the interceptor property of the resource action definition. See the $resource docs for more.

So:

function resourceResponseErrorHandler(response) {
  $log.error("Resource error");
}

currentNgModule.factory('StatusesResource', function($resource, $timeout){
    var StatusesResource = $resource(get_gui_url_param('company.employee.statuses', true), null, {
            get: {method: 'GET', isArray: true, headers: getGenericHttpHeaders(), interceptor: { resonseError: resourceResponseErrorHandler }},
            create: {method: 'POST', isArray: false, headers: getGenericHttpHeaders(), interceptor: { resonseError: resourceResponseErrorHandler }},
            $update: {
                method: 'PATCH',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true),
                interceptor: { resonseError: resourceResponseErrorHandler }
            },
            delete: {
                method: 'DELETE',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true),
                interceptor: { resonseError: resourceResponseErrorHandler }
            }
        }, false);

    return StatusesResource;
});
Community
  • 1
  • 1
Carl G
  • 17,394
  • 14
  • 91
  • 115