Директива Angular-ui Typeahead, вызывающая factory

Я пытаюсь использовать factory в контроллере директивы, но он не заполняет тип, как должен. Используя $http.get непосредственно внутри директивы, все работает отлично.

Упреждающий HTML

<input type="text" ng-model="asyncSelected" placeholder="Locations loaded via $http" uib-typeahead="address for address in getLocation($viewValue)" typeahead-loading="loadingLocations" typeahead-no-results="noResults" class="form-control" autocomplete>
<i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>
<div ng-show="noResults">
<i class="glyphicon glyphicon-remove"></i> No Results Found
</div>

Директива

'use strict';

angular.module('myModule')
    .directive('autocomplete', function() {
        return {
            templateUrl: 'app/autocomplete/autocomplete.html',
            restrict: 'EA',
            link: function(scope, element, attrs) {},
            controller: function($scope, autocompleteFactory, $http) {
                $scope.getLocation = function(val) {                    autocompleteFactory.getCities('//maps.googleapis.com/maps/api/geocode/json', val).then(function(response) {
                        return response.data.results.map(function(item) {
                            return item.formatted_address;
                        });
                    });
                };

            // return $http.get('//maps.googleapis.com/maps/api/geocode/json', {
            //  params: {
            //      address: val,
            //      sensor: false
            //  }
            // }).then(function(response) {
            //  return response.data.results.map(function(item) {
            //      console.log(item.formatted_address);
            //      return item.formatted_address;
            //  });
            // });

            //};
            //}

        }
    }
});

Фабрика

'use strict';

angular.module('myModule')
  .factory('autocompleteFactory', function($http, $q) {
    return {
      getCities: function(url, val) {
        return $http({
          url: url,
          method: "GET",
          params: {
            address: val,
            sensor: false
          }
        });
      }
    }
  });

рабочая скрипта

не работает скрипт

Любые подсказки? Спасибо !




Ответы (1)


Вам нужно return указать города в строке 24: http://jsfiddle.net/ngzxL60h/2/.

person ChrisY    schedule 28.12.2015