Angular返回的未定义值

时间:2018-08-17 07:17:18

标签: angularjs return-value

我有一个Angular函数来检索出租车的烦恼,并且我需要计算用户之间的距离以及烦恼的作者之间的距离,然后我就有这样的东西:

在我的HTML中:

<main class="main list_page" ng-controller="taxiRechercheCtrl" ng-init="loadRecherche()">

在Angular中:

myApp.controller("taxiRechercheCtrl", ['$scope','$http','$location', 'TaxiService', 'UserService', function($scope, $http, $location, TaxiService, UserService){
    $scope.loadRecherche = function(){
        UserService.getPosition().then(function(position){
            TaxiService.find($scope.recherche).then(function(response){
                $scope.annonces = response.annonces;
                for(var i=0;i<$scope.annonces.length;i++){
                    $scope.annonces[i].Distance = my calculate distance
                }
            }, function(err){
            console.log(err);
            });
        }, function(err){
        console.log(err);
        });
    };

    $scope.calculeDistanceGoogle = function(origin, destination){
        var origin1 = new google.maps.LatLng(origin.Latitude, origin.Longitude);
        var destination1 = new google.maps.LatLng(destination.latitude, destination.longitude);
        var args = {
        origins: [origin1],
        destinations: [destination1],
        travelMode: 'DRIVING'
        };
        var service = new google.maps.DistanceMatrixService();
        service.getDistanceMatrix(args, function(response, status) {
            var elt = response.rows[0].elements[0];
            $scope.distanceTxt = elt.distance.text;
        });
        return $scope.distanceTxt;
    }
}

在$ scope.annonces [i] .Distance =我的计算距离中,我想要calculeDistanceGoogle函数返回的距离值。

我尝试过:

$scope.calculeDistanceGoogle($scope.annonces[i].Ville, response.position).then(function(response){
    console.log(response);
    }, function(err){
      console.log(err);
    });

但是我有一个错误:$ scope.calculeDistanceGoogle(...)。那不是一个函数。

我尝试使用$ scope.distanceTxt变量,我直接尝试:

var myposition = $scope.calculeDistanceGoogle($scope.annonces[i].Ville, response.position);

1 个答案:

答案 0 :(得分:0)

$scope.calculeDistanceGoogle(...) 不是返回Promise的函数,因此您不能调用.then(...)子句。

然后,此代码是错误的:

service.getDistanceMatrix(args, function(response, status) {
    var elt = response.rows[0].elements[0];
    $scope.distanceTxt = elt.distance.text;
});
return $scope.distanceTxt;

因为服务可能是异步的。

我的建议是返回一个值为distanceTxt的承诺作为数据(如果承诺中也存在错误,则添加错误)。