我对此代码有疑问。
在我的控制器中我有这个。
$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的每个info值。
我不知道该怎么办。 这是视图
<div class="lista_home" ng-repeat= "spiaggia in spiagge">
<h1>{{spiaggia.nome}}</h1> <p>distanza {{spiaggia.distanza}} km </p>
</div>
抱歉我的英文。 有什么想法吗?
感谢。
答案 0 :(得分:0)
我认为发生的事情是当它在directionService
内部时,该功能超出了范围。您可以尝试使用$rootScope
来覆盖该功能。而不是使变量将函数添加到控制器的范围。另外,不要忘记在控制器中注入$rootScope
作为依赖项。
$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;
}
$rootScope.riempi(info);//go to the rootscope and find riempi
});
}
$scope.riempi = function(spiaggia) {
//alert("distanza " + spiaggia.distanza);
$scope.spiagge.push(spiaggia);
}
答案 1 :(得分:0)
因为googlemaps不是......因为角色不对...视图不会更新。你能尝试添加$ scope。$ apply();在$ scope.riempi函数的末尾?