我有這個問題。
在我的控制器中,我有這個。
$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>
對不起,我的英語。 有什麼想法?
謝謝。
是'directionsService'異步調用?請求,響應看起來是異步的,而且看起來你可能在你接收到數據之前試圖調用你的函數,這意味着你將傳遞'null'。 – Claies 2015-04-03 14:29:33
感謝您的回答。 我認爲這是,沒有辦法等待結果? – Vincenzo 2015-04-03 14:43:38
@Claies實際上也可能是這種情況,但是您應該解決通話返回的承諾並繼續使用'.then'或其他東西。嗯,但我沒有得到的是這個'if(status == google.maps.DirectionsStatus.OK)'所以我猜這個承諾已經解決了嗎? – Michelangelo 2015-04-03 14:55:06