2015-12-09 6 views
1
$scope.loadDistrict=function(id) 
{ 

    $scope.districtList=[]; 
    angular.forEach($scope.districts,function(district, callback) 
        { 
         if(district.district_id==id) 
         { 
          $scope.districtList.push(district); 
          $scope.lat_wgs = district.lat_wgs; 
          $scope.long_wgs = district.long_wgs; 
          console.log($scope.lat_wgs); 
          console.log($scope.long_wgs);     
         } 
        }) 

}; 

Здравствуйте, я новичок в angular.My проблема, я хочу, чтобы получить доступ к переменной $scope.lat_wgs и $scope.long_wgs снаружи на этой функции. Но когда я запускаю код, я получаю undefined.AngularJS: доступ переменной вне функции

ответ

0

Вы должны объявить их перед функцией

$scope.lat_wgs = ''; 
$scope.long_wgs = ''; 
$scope.loadDistrict=function(id) 
{ 
    $scope.districtList=[]; 
    angular.forEach($scope.districts,function(district, callback) 
      { 
       if(district.district_id==id) 
       { 
        $scope.districtList.push(district); 
        $scope.lat_wgs = district.lat_wgs; 
        $scope.long_wgs = district.long_wgs; 
        console.log($scope.lat_wgs); 
        console.log($scope.long_wgs);     
       } 
      }) 
}; 

Если вы объявляете переменную внутри {} скобках, значение этой переменной известно только внутри этой скобки. Например

foo = function(){ 
    var one = 1; 
}; 
console.log(one); //oh no, i don't know what is value of 'one' variable 
//well, I will output undefined 

РЕШЕНИЯ - объявить переменные перед тем {скобки}

var one = 1; 
foo = function(){ 
    one = 2; 
}; 
console.log(one); //it will output 2, cause value of variable 'one' changed 
//inside foo function, but it won't be undefined 
+0

я отредактировал код. декларация должна быть вне функции (как вы говорите в комментарии) – AlainIb

+0

Спасибо! Я не заметил, что – sgracki

+0

Если я использовал этот метод, я не могу получить доступ к значению district.lat_wgs – nuriffah

Смежные вопросы