Skip to content

Instantly share code, notes, and snippets.

@dmdevoss
Created July 29, 2014 18:52
Show Gist options
  • Save dmdevoss/19659da45eb12ce462f3 to your computer and use it in GitHub Desktop.
Save dmdevoss/19659da45eb12ce462f3 to your computer and use it in GitHub Desktop.
Global errors for angular 1.3
var globalErrors = new angular
.module('globalErrors', [])
.config(function($provide, $httpProvider, $compileProvider) {
var elementsList = $();
var showMessage = function(content, cl, time) {
$('<div/>')
.addClass('globalAlertMessage')
.addClass(cl)
.fadeIn('fast')
.delay(time)
.fadeOut('fast', function() { $(this).remove(); })
.appendTo(elementsList)
.text(content);
};
$httpProvider.interceptors.push(function($q) {
return {
'response': function (response) {
if (response.config.method != "GET"){ //no need for responses after gets (at least for my uses)
showMessage('Success!', 'successMessage', 2000);
}else console.log(response); //still want to see it in strange cases
return response;
},
'responseError': function(rejection) {
console.log(rejection);
switch (rejection.status) {
case 401:
showMessage('Looks like you\'re not logged in anymore.', 'errorMessage', 5000);
break;
default :
showMessage('Yikes! ' + rejection.statusText, 'errorMessage', 5000);
}
return $q.reject(rejection);
}
};
});
$compileProvider.directive('appMessages', function() { //creates an array of linked DOM elements
var directiveDefinitionObject = {
link: function(scope, element, attrs) { elementsList.push($(element)); }
};
return directiveDefinitionObject;
});
});
Copy link

ghost commented Nov 26, 2014

Thanks, very useful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment