src/components/autocomplete/js/autocompleteController.js
function init () {

    $mdUtil.initOptionalProperties($scope, $attrs, {
      searchText: '',
      selectedItem: null,
      clearButton: false,
      disableVirtualRepeat: false,
    });

    $mdTheming($element);
    configureWatchers();
    $mdUtil.nextTick(function () {

      gatherElements();
      moveDropdown();

      // Forward all focus events to the input element when autofocus is enabled
      if ($scope.autofocus) {
        $element.on('focus', focusInputElement);
      }
      if ($scope.inputAriaDescribedBy) {
        elements.input.setAttribute('aria-describedby', $scope.inputAriaDescribedBy);
      }
      if (!$scope.floatingLabel) {
        if ($scope.inputAriaLabel) {
          elements.input.setAttribute('aria-label', $scope.inputAriaLabel);
        } else if ($scope.inputAriaLabelledBy) {
          elements.input.setAttribute('aria-labelledby', $scope.inputAriaLabelledBy);
        } else if ($scope.placeholder) {
          // If no aria-label or aria-labelledby references are defined, then just label using the
          // placeholder.
          elements.input.setAttribute('aria-label', $scope.placeholder);
        }
      }
    });
  }
function init () {

    $mdUtil.initOptionalProperties($scope, $attrs, {
      searchText: '',
      selectedItem: null,
      clearButton: false,
      disableVirtualRepeat: false,
    });

    $mdTheming($element);
    configureWatchers();
    $mdUtil.nextTick(function () {

      gatherElements();
      moveDropdown();

      // Forward all focus events to the input element when autofocus is enabled
      if ($scope.autofocus) {
        $element.on('focus', focusInputElement);
      }
      if ($scope.inputAriaDescribedBy) {
        elements.input.setAttribute('aria-describedby', $scope.inputAriaDescribedBy);
      }
      if (!$scope.floatingLabel) {
        if ($scope.inputAriaLabel) {
          elements.input.setAttribute('aria-label', $scope.inputAriaLabel);
        } else if ($scope.inputAriaLabelledBy) {
          elements.input.setAttribute('aria-labelledby', $scope.inputAriaLabelledBy);
        } else if ($scope.placeholder) {
          // If no aria-label or aria-labelledby references are defined, then just label using the
          // placeholder.
          elements.input.setAttribute('aria-label', $scope.placeholder);
        }
      }
    });
  }
function init ( ) { $mdUtil . initOptionalProperties ( $scope , $attrs , { searchText : '' , selectedItem : null , clearButton : false , disableVirtualRepeat : false , } ) ; $mdTheming ( $element ) ; configureWatchers ( ) ; $mdUtil . nextTick ( function ( ) { gatherElements ( ) ; moveDropdown ( ) ; // Forward all focus events to the input element when autofocus is enabled if ( $scope . autofocus ) { $element . on ( 'focus' , focusInputElement ) ; } if ( $scope . inputAriaDescribedBy ) { elements . input . setAttribute ( 'aria-describedby' , $scope . inputAriaDescribedBy ) ; } if ( ! $scope . floatingLabel ) { if ( $scope . inputAriaLabel ) { elements . input . setAttribute ( 'aria-label' , $scope . inputAriaLabel ) ; } else if ( $scope . inputAriaLabelledBy ) { elements . input . setAttribute ( 'aria-labelledby' , $scope . inputAriaLabelledBy ) ; } else if ( $scope . placeholder ) { // If no aria-label or aria-labelledby references are defined, then just label using the // placeholder. elements . input . setAttribute ( 'aria-label' , $scope . placeholder ) ; } } } ) ; }
initialization methods 
Initialize the controller, setup watchers, gather elements
initialization methods Initialize the controller setup watchers gather elements