j ai un $scope.greeting[] c est une liste de coursier dans mon controlleur ! je veut obtenir la distance entre une origine (adresse de la commande) et une destination (adresse du livreur) et ce pour chaque livreur dans $scope.greeting[x].distance ! j ai fait ce code,le probleme est que je ne peut recuperer aucune des valeurs en dehors de la fonction callback de serviceDistanceMatrix :
var app = angular.module('PickleDispatch', ['ngMap']);
app.controller('gestionLivreur',function ($scope, $http, $timeout) {
$scope.getDistance = function() {
$scope.todosDests = [];
$scope.comments;
var is = 0;
for(var tous =0;tous < $scope.greeting.length;tous++) {
var dest = $scope.greeting[tous].latitude+","+$scope.greeting[tous].longitude;
var or = $scope.origin;
var yv = 0;
$scope.googleCall(or,dest);
alert($scope.test); // the value = undefined here
}
};
$scope.googleCall = function(ori,desti) {
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [ori],
destinations: [desti],
travelMode: google.maps.TravelMode.DRIVING,
}, function (response, status) {
if (status == google.maps.DistanceMatrixStatus.OK) {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var k = 0; k < origins.length; k++) {
var results = response.rows[k].elements;
for (var l = 0; l < results.length; l++) {
var element = results[l];
var distance = element.distance.value;
googleResult.products = distance;
var duration = element.duration.text;
var from = origins[k];
var to = destinations[l];
$scope.test = distance;
alert($scope.test); // i get the good value here
$scope.$apply();
}
}
}
});
};
});
Merci d avance pour votre aide !
ps : j ai besoin d avoir ces donné stocké dans mon controller en non la vue html
- Edité par RaphaëlBurroni 26 août 2016 à 15:59:12
angularjs recuperer async result
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.