2017-01-11 4 views
0

foreach関数の内側からスコープにアクセスする方法はありますか?foreach関数内からアクセス可能な角度範囲

$scope.getPlowHistory = function() { 
     $scope.plowId = $stateParams.plowId; 
     SnowPlowService.getPlowHistory($scope.plowId).then(function(response) { 
      $scope.plow = response; 

      angular.forEach($scope.plow,function(value,index){ 
       $scope.Lat = value.Latitude; 
       $scope.Lng = value.Longitude;      
      }); 
     }); 
    }; 

は、私は$ scope.getPlowHistory()で使用できるだけでなく、foreachループ内であることを$ scope.Latと$ scope.Longが必要になります。

ありがとうございます!

+0

$ scopeは、約束が解決する前にスコープが破壊されていない限り、javascriptクロージャに基づいてアクセス可能である必要があります。あなたはどんなエラーを出していますか? –

+0

$ scope.getPlowHistory = function(){... console.log($ scope.Lat);};を実行しようとすると「未定義」になります。ループの外側にあります。 – nrunit

+0

これはアクセスに問題はありませんが、ループの各反復で変数を上書きしています。 – charlietfl

答えて

1

あなたがしようとしていることを100%理解していませんが、何かが正しく見えません。

angular.forEach($scope.plow,function(value,index){ 
    $scope.Lat = value.Latitude; 
    $scope.Lng = value.Longitude;      
}); 

あなたのコードは、実際にあなたの応答の最後の要素の値を$ scope.Latと$ scope.Lngを更新しています。私はあなたがやろうとしていると思う何

このようなものである:あなたの結果は3つの要素が含まれている場合、$ scope.Latと$ scope.Lngがそれぞれ3つの要素が含まれていますので、

angular.forEach($scope.plow,function(value,index){ 
    $scope.Lat[index] = value.Latitude; 
    $scope.Lng[index] = value.Longitude;      
}); 

元の質問に答えるには、何らかの理由で最後の要素の結果が空であるため、おそらく未定義になります。

コメントしていないのであれば、これがあなたが探しているものであることを願っております。私は精緻に説明します。

+0

ありがとう、それはループの変数を理解するのに役立ちました。 – nrunit

+0

@nrunit私の答えがあなたを助けてくれたなら、それを私の評判を築くのに役立つ受け入れられた答えとしてマークしてください。 –

関連する問題