Tôi đã làm việc với một nhà máy được tích hợp với google maps tự động hoàn thành và những lời hứa được thực hiện, tôi hy vọng bạn phục vụ.
http://jsfiddle.net/the_pianist2/vL9nkfe3/1/
bạn chỉ cần thay thế dịch vụ tự động hoàn thành theo yêu cầu này bằng $ http incuida trước khi xuất xưởng.
app.factory('Autocomplete', function($q, $http) {
và $ http yêu cầu với
var deferred = $q.defer();
$http.get('urlExample').
success(function(data, status, headers, config) {
deferred.resolve(data);
}).
error(function(data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
<div ng-app="myApp">
<div ng-controller="myController">
<input type="text" ng-model="search"></input>
<div class="bs-example">
<table class="table" >
<thead>
<tr>
<th>#</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="direction in directions">
<td>{{$index}}</td>
<td>{{direction.description}}</td>
</tr>
</tbody>
</table>
</div>
'use strict';
var app = angular.module('myApp', []);
app.factory('Autocomplete', function($q) {
var get = function(search) {
var deferred = $q.defer();
var autocompleteService = new google.maps.places.AutocompleteService();
autocompleteService.getPlacePredictions({
input: search,
types: ['geocode'],
componentRestrictions: {
country: 'ES'
}
}, function(predictions, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
deferred.resolve(predictions);
} else {
deferred.reject(status);
}
});
return deferred.promise;
};
return {
get: get
};
});
app.controller('myController', function($scope, Autocomplete) {
$scope.$watch('search', function(newValue, oldValue) {
var promesa = Autocomplete.get(newValue);
promesa.then(function(value) {
$scope.directions = value;
}, function(reason) {
$scope.error = reason;
});
});
});
câu hỏi được thực hiện trên:
deferred.resolve(varResult);
khi bạn đã làm tốt và yêu cầu:
deferred.reject(error);
khi có lỗi và sau đó:
return deferred.promise;