我有这个问题。
在我的控制器中,我有这个。
$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