code: function $onInit() {
      // Define one-way bindings
      defineOneWayBinding('stretchTabs', handleStretchTabs);
  
      // Define public properties with change handlers
      defineProperty('focusIndex', handleFocusIndexChange, ctrl.selectedIndex || 0);
      defineProperty('offsetLeft', handleOffsetChange, 0);
      defineProperty('hasContent', handleHasContent, false);
      defineProperty('maxTabWidth', handleMaxTabWidth, getMaxTabWidth());
      defineProperty('shouldPaginate', handleShouldPaginate, false);
  
      // Define boolean attributes
      defineBooleanAttribute('noInkBar', handleInkBar);
      defineBooleanAttribute('dynamicHeight', handleDynamicHeight);
      defineBooleanAttribute('noPagination');
      defineBooleanAttribute('swipeContent');
      defineBooleanAttribute('noDisconnect');
      defineBooleanAttribute('autoselect');
      defineBooleanAttribute('noSelectClick');
      defineBooleanAttribute('centerTabs', handleCenterTabs, false);
      defineBooleanAttribute('enableDisconnect');
  
      // Define public properties
      ctrl.scope             = $scope;
      ctrl.parent            = $scope.$parent;
      ctrl.tabs              = [];
      ctrl.lastSelectedIndex = null;
      ctrl.hasFocus          = false;
      ctrl.styleTabItemFocus = false;
      ctrl.shouldCenterTabs  = shouldCenterTabs();
      ctrl.tabContentPrefix  = 'tab-content-';
      ctrl.navigationHint = 'Use the left and right arrow keys to navigate between tabs';
  
      // Setup the tabs controller after all bindings are available.
      setupTabsController();
    }
docs: AngularJS Lifecycle hook for newer AngularJS versions.
  Bindings are not guaranteed to have been assigned in the controller, but they are in the
  $onInit hook.