$scope 推送不起作用 angularjs
$scope push doesn't work angularjs
我对这段代码有疑问。
在我的控制器中有这个。
$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
函数会看到信息的每个值,包括距离。
我不知道该怎么办。
这是观点
<div class="lista_home" ng-repeat= "spiaggia in spiagge">
<h1>{{spiaggia.nome}}</h1> <p>distanza {{spiaggia.distanza}} km </p>
</div>
对不起我的英语。
有什么想法吗?
谢谢。
我认为发生的情况是,当它在 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);
}
因为 googlemaps 不是 ummm... 'angular' 视图不会更新。您可以尝试添加 $scope.$apply();在你的 $scope.riempi 函数的末尾?
我对这段代码有疑问。
在我的控制器中有这个。
$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
函数会看到信息的每个值,包括距离。
我不知道该怎么办。 这是观点
<div class="lista_home" ng-repeat= "spiaggia in spiagge">
<h1>{{spiaggia.nome}}</h1> <p>distanza {{spiaggia.distanza}} km </p>
</div>
对不起我的英语。 有什么想法吗?
谢谢。
我认为发生的情况是,当它在 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);
}
因为 googlemaps 不是 ummm... 'angular' 视图不会更新。您可以尝试添加 $scope.$apply();在你的 $scope.riempi 函数的末尾?