Skip to content

Instantly share code, notes, and snippets.

@benschw
Last active December 16, 2015 23:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benschw/5516156 to your computer and use it in GitHub Desktop.
Save benschw/5516156 to your computer and use it in GitHub Desktop.
AngularJS Breadcrumbs Service
// https://github.com/angular-app/angular-app
angular.module('services.breadcrumbs', []);
angular.module('services.breadcrumbs').factory('breadcrumbs', ['$rootScope', '$location', function($rootScope, $location){
var breadcrumbs = [];
var breadcrumbsService = {};
//we want to update breadcrumbs only when a route is actually changed
//as $location.path() will get updated imediatelly (even if route change fails!)
$rootScope.$on('$routeChangeSuccess', function(event, current){
var pathElements = $location.path().split('/'), result = [], i;
var breadcrumbPath = function (index) {
return '/' + (pathElements.slice(0, index + 1)).join('/');
};
pathElements.shift();
for (i=0; i<pathElements.length; i++) {
result.push({name: pathElements[i], path: breadcrumbPath(i)});
}
breadcrumbs = result;
});
breadcrumbsService.getAll = function() {
return breadcrumbs;
};
breadcrumbsService.getFirst = function() {
return breadcrumbs[0] || {};
};
return breadcrumbsService;
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment