У меня проблема с этим кодом.
В моем контроллере у меня есть это.
$scope.spiagge = [];
var distanza = function(info, posizione) {
var request = {
origin : posizione,
destination : new google.maps.LatLng(info.latitudine, info.longitudine),
travelMode : google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
//$scope.directionsDisplay.setDirections(response);
info.distanza = response.routes[0].legs[0].distance.text;
//distanza= response.routes[0].legs[0].distance.value/1000 ;
}
riempi(info);
});
//riempi(info);
}
var riempi = function(spiaggia) {
//alert("distanza " + spiaggia.distanza);
$scope.spiagge.push(spiaggia);
}
Если я ставлю riempi(info)
вне функции DirectionsService, $scope.spiagge.push
работы без info.distanza
. Я думаю, это потому, что info.distanza
является локальной переменной directionService. Если я вхожу внутрь, как в коде здесь, он вообще не работает; но функция riempi
видит каждое значение информации, включая distanza.
Я не знаю, что делать. Это мнение
<div class="lista_home" ng-repeat= "spiaggia in spiagge">
<h1>{{spiaggia.nome}}</h1> <p>distanza {{spiaggia.distanza}} km </p>
</div>
Извините за мой английский. Любая идея?
Спасибо.
- это вызов «routesService» для асинхронного вызова? запрос, ответ кажется async, и похоже, что вы пытаетесь вызвать свою функцию, прежде чем вы получите данные обратно, то есть вы будете передавать «null». – Claies
Спасибо за ваш ответ. Я думаю, что нет способа ждать результата? – Vincenzo
@Claies Также может быть и в самом деле, но тогда вы должны решить обещание, возвращенное вызовом, и продолжить с '.then' или что-то в этом роде. Хммм, но то, что я не получаю, это 'if (status == google.maps.DirectionsStatus.OK)', поэтому я думаю, что обещание уже разрешено там? – Michelangelo