Я использую API Карт Google, чтобы получить расстояние между двумя точками. Этот метод использует функцию обратного вызова. Проблема в том, что этот код находится внутри Угловой службы, которую я хочу вызвать из контроллера, чтобы контроллер мог выводить результаты в область видимости. Но я понятия не имею, как служба может вернуть полученные больницы [] массив объектов для контроллера. Как я могу это сделать?Обратный звонок внутри Угловой службы - как вернуть данные контроллеру
myAppServices.service('NearestHospitalService', function(){
function calculateDistances() {
var service = new google.maps.DistanceMatrixService();
var hospitals = [];
service.getDistanceMatrix(
{
origins: [origin1],
destinations: [destinationA, destinationB],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, callback);
}
function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
}
else {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
var results = response.rows[0].elements;
for (var j = 0; j < results.length; j++) {
hospitals.push(new hospital(destinations[j], results[j].distance, results[j].duration));
}
hospitals.sort(compareDistance);
}
}
});
Благодарим за помощь Магнуса! У меня есть быстрый вопрос - что такое var api = {} и почему вы его возвращаете? – bjornasm
Это делает его объектом с функциями. В вашем примере не было никакого возвращаемого значения из службы вообще. – Magnus
Спасибо. Как насчет функции (ds) в контроллере, что такое ds? – bjornasm