2017-01-11 101 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.Lat和$ scope.Long是在$ scope.getPlowHistory()可用,而不僅僅是foreach循環中。

謝謝!

+0

$ scope _should be_access,基於javascript關閉,除非在promise解決之前範圍被破壞。你遇到了什麼錯誤? –

+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您迴應的最後一個元素的值。

我知道你在試圖做的是這樣的:

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

所以,如果你的結果包含三個元素,$ scope.Lat和$ scope.Lng將每個包含三個要素。

因此,要回答您的原始問題,您可能會得到未定義,因爲最後一個元素的結果由於某種原因而爲空。

我希望這是你正在尋找的,如果沒有評論,我會很樂意詳細說明。

+0

謝謝,它幫助我理解循環中的變量。 – nrunit

+0

@nrunit如果我的回答對你有幫助,請將其標記爲可接受的答案,以幫助建立我的聲譽。 –