[英]How to call function when variable is available in angularjs
在geocodePosition函數中生成place_id,由service.getDetails
在同一函數(geocodePosition)中使用。 但問題是這個代碼不會停止,直到獲取place_id並轉到使用place_id的service.getDetails ,這不會生成yes。 那么如何等到place_id生成。
function geocodePosition(pos){
geocoder.geocode({ latLng: pos}, function(responses){
$scope.place_id=responses[0].place_id;
console.log('$scope.place_id'+$scope.place_id);
});
var map=$scope.map.control.getGMap();
var service = new google.maps.places.PlacesService(map);
$scope.$watch(function(){
return $scope.place_id
}, function(place_id){
service.getDetails({placeId: place_id}, function(place, status){
console.log('place'+place);
});
});
}//End of geocodePosition
您可以$watch
$scope.place_id
變量並在更改時調用getDetails
。
$scope.$watch(function() {
return $scope.place_id;
}, function(place_id) {
if (!place_id) {
return;
}
service.getDetails({ placeId: place_id }, function(place, status) {
console.log('place='+place);
});
});
由於geocoder.geocode
是異步的:使用$ Q在你的代碼introcing承諾。
例如:
function geocodePosition(pos){
q = $q.defer;
geocoder.geocode({ latLng: pos}, function(responses){
var place_id=responses[0].place_id;
console.log('$scope.place_id'+$scope.place_id);
q.resolve(place_id);
}
};
geocodePosition(pos).then(function(place_id){
//use it here...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.