2017-01-11 3 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(), а не только внутри цикла Еогеасп.

Спасибо!

+0

$ scope _should be_ доступный, основанный на закрытии javascript, если область не уничтожается до того, как обетование будет разрешено. Какую ошибку вы получаете? –

+0

получение "undefined" при попытке $ 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 Если мой ответ помог вам, отметьте его как принятый ответ, чтобы помочь создать мою репутацию. –