angular-breadcrumbs
Version:
AngularJS Breadcrumbs for ngRoute
1 lines • 1.28 kB
JavaScript
!function(r){"use strict";r.module("ng-breadcrumbs",[]).factory("breadcrumbs",["$rootScope","$location","$route",function(t,e,n){var a={breadcrumbs:[],get:function(r){if(this.options=r||this.options,this.options)for(var t in this.options)if(this.options.hasOwnProperty(t))for(var e in this.breadcrumbs)if(this.breadcrumbs.hasOwnProperty(e)){var n=this.breadcrumbs[e];n.label===t&&(n.label=this.options[t])}return this.breadcrumbs},generateBreadcrumbs:function(){var t,e,a,i,o=n.routes,s=this,u={},c="",b="";n&&n.current&&n.current.originalPath&&(this.breadcrumbs=[],t=n.current.params,i=n.current.options||{},e=n.current.originalPath.trim().split("/"),""===e[1]&&e.splice(1,1),r.forEach(e,function(r,e){a=":"===r[0]&&"undefined"!=typeof t[r.slice(1,r.length)]?t[r.slice(1,r.length)]:!1,u[e]={path:a||r,originalPath:r},c=Object.keys(u).map(function(r){return u[r].path}).join("/")||"/",b=Object.keys(u).map(function(r){return u[r].originalPath}).join("/")||"/",o[b]&&(o[b].label||a)&&!o[b].excludeBreadcrumb&&s.breadcrumbs.push({path:c,originalPath:b,label:o[b].label||a,param:a,options:i})}))}};return t.$on("$routeChangeSuccess",function(){a.generateBreadcrumbs()}),t.$watch(function(){return a.options},function(){a.generateBreadcrumbs()}),a.generateBreadcrumbs(),a}])}(angular);