$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 函数的末尾?