2014-11-26 4 views
0

내부 자바 스크립트 함수 내부 변수 외부 변수에 액세스하는 방법, 아래 코드를 확인하십시오 app() 함수 내에서 "인덱스"변수에 액세스해야합니다. 내가 인덱스 수를 필요로하지만, 그것을 얻을 메신저없는, 함수 내에서 외부 값에 액세스하는 방법을 도와주세요() 함수 APA 내부 외부 변수 범위는 자바 스크립트 함수 내에서 사용할 수 없습니다

function validate() 
    { 

    for (index = 0; index < results.length; index++) { 
     var parsedData_1; 
     var provider = results[index].get("provider");       
     var user = results[index].get("user");   
     var addresses = user.get("addresses"); 

     var address = addresses[1]; 

     var GameScore = Parse.Object.extend("Address"); 
     var query = new Parse.Query(GameScore);   
     var data = JSON.stringify(address);  


     var parsedData = jQuery.parseJSON(data);    
     query.get(parsedData.objectId, { 
     success: function(resultadr) {   

     var res = JSON.stringify(resultadr); 
     var parsedData_1 = jQuery.parseJSON(res); 
     var apartment = parsedData_1.apartment; 

     apa(apartment); 

     }, 
     error: function(object, error) {    
     alert('error');    

     } 
     });   

     function apa(apartment) 
     { 
     alert(index); [I'm not getting the index value inside this function] 
     alert(apartment); 

     } 

    } 

    } 

. 당신은 인덱스 변수를 선언 할 수

+0

왜 색인이 필요합니까? 지금 가지고있는 방식대로 액세스 할 수 없습니다. – artm

+0

apa() 함수 안에 동적 ID를 만들어야하므로 필요합니다. – ManoharSingh

답변

0

미리 :)에서

덕분에 전 세계적으로 모든 기능이에 액세스 할 수

0

지금까지 내가 APA를 (볼 수) 인덱스 변수에 액세스 할 수 없습니다, 그래서 나는 문제는 당신이 따라서 그 변수 만 담당에게 최신 값에 액세스 할 수있는 색인에 액세스 할 수 클로저를 사용하고 있다는 점이다이

apa(apartment, index); 
+1

'get'이 성공을 리턴 할 때와 마찬가지로 for 루프가 이미 완료된 경우에도 작동하지 않습니다. – artm

+0

테스트해볼 필요가 있지만 var i = index; apa (apartment, i); 이제는 –

0

처럼 APA를() 함수 호출의 매개 변수 안에 넣어, 그리고 부를 것이다 app 함수. 예를 들어, results.length equlas 11 일 경우 앱 함수의 인덱스는 항상 11입니다.

해결 방법은 for 루프 내에 변수를 선언하고 해당 변수에 인덱스 값을 할당 한 다음 app 함수에 전달합니다 .

//Create a factory function for the app function 
//Outside the for loop. 

var createAppFunc = function (i) { 
    return function() { 
     console.log(i); 
    }; 
}; 
for (var index = 0, l = results.length; index < l; index++) 
{ 
    var newVar = index; 
    var app = createAppFunc(index); //Now, app is a function. 
} 

굿 럭 :).

+0

을 사용할 수 있습니다. 함수 apa() 내부의 인덱스의 마지막 카운트 값을 얻을 때마다 정확한 값을 전달하는 방법은 무엇입니까? 인덱스 개수가 0이면 apa()에 0을 전달해야 함을 의미합니다. 감사합니다. – ManoharSingh

+0

나는 그것을 알기를 기다렸다가 내 대답을 편집하십시오 –

+0

@ManoharSingh 답변을 업데이트했습니다. –

0

Function.bind()을 사용하면 실제 인덱스를 첫 번째 인수로 sucess-callback에 전달할 수 있습니다. 거기서 그것을 얻을 수 있고 함수로 매개 변수로 전달하면 apa()입니다. 그리고 : for()에 색인을 위해 키워드 var을 사용하십시오. (여기서는 NULL)

function validate() { 

    for (var index = 0; index < results.length; index++) { 

     /* all the vars here */ 

     query.get(parsedData.objectId, { 
      success: function(idx, resultadr) { 
       var res = JSON.stringify(resultadr); 
       var parsedData_1 = jQuery.parseJSON(res); 
       var apartment = parsedData_1.apartment; 
       apa(idx, apartment); 
      }.bind(null, index), 
      error: function(object, error) {    
       alert('error');    
      } 
     }); 

     function apa(index, apartment) { 
      console.log(index); console.log(apartment); 
     } 

    } 
} 

첫번째 파라미터의 bind()는 결합 함수의 context 설정한다. 귀하가 전달한 내용은 성공 콜백에서 this 키워드로 액세스 할 수 있습니다.

0

나는 당신이 함수를 호출 할 때마다 다음 루프 호출에 의해 호출이 손상 될 것이라고 생각한다. 결국 메서드는 한 번만 호출 될 것이다.

관련 문제