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?

1 Answer 1

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;
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.