IonicModule .controller('$ionicNavBar', [ '$scope', '$element', '$attrs', '$compile', '$timeout', '$ionicNavBarDelegate', '$ionicConfig', '$ionicHistory', function($scope, $element, $attrs, $compile, $timeout, $ionicNavBarDelegate, $ionicConfig, $ionicHistory) { var CSS_HIDE = 'hide'; var DATA_NAV_BAR_CTRL = '$ionNavBarController'; var PRIMARY_BUTTONS = 'primaryButtons'; var SECONDARY_BUTTONS = 'secondaryButtons'; var BACK_BUTTON = 'backButton'; var BUTTON_TYPES = 'primaryButtons secondaryButtons leftButtons rightButtons'.split(' '); var self = this; var headerBars = []; var navElementHtml = {}; var isVisible = true; var queuedTransitionStart, queuedTransitionEnd, latestTransitionId; $element.parent().data(DATA_NAV_BAR_CTRL, self); var delegateHandle = $attrs.delegateHandle || 'navBar' + ionic.Utils.nextUid(); var deregisterInstance = $ionicNavBarDelegate._registerInstance(self, delegateHandle); self.init = function() { $element.addClass('nav-bar-container'); ionic.DomUtil.cachedAttr($element, 'nav-bar-transition', $ionicConfig.views.transition()); // create two nav bar blocks which will trade out which one is shown self.createHeaderBar(false); self.createHeaderBar(true); $scope.$emit('ionNavBar.init', delegateHandle); }; self.createHeaderBar = function(isActive, navBarClass) { var containerEle = jqLite('