2013-02-22 8 views
0

Вот мой код. Как получить значение цикла for внутри функции обратного вызова. Мне нужно, чтобы получить доступ к gradableGBItems [я] .title внутри обратного вызоваКак передать параметр функции обратного вызова.

for(var i=0; i < gradableGBItems.length ; i++) 
     { 
      //console.log(gradableGBItems[i].isGradable); 
      //console.log(gradableGBItems[i].id); 
      var resultItem=''; 

      Title=gradableGBItems[i].title; 
      //console.log(Title); 
      //console.log(gradableGBItems[i].id); 
      gradeBookbRestService.loadGradeBookItemByItemId(token, gradableGBItems[i].id, function(resultItem) { 

        //Console.log(); //Need to access value 

        if(resultItem.grade != null || resultItem.grade != undefined) 
        { 
         //console.log(resultItem.points); 
         jsonObj.push({id:resultItem.grade.id, comments:resultItem.grade.comments, isVisible:resultItem.grade.isVisible, letterGrade:resultItem.grade.letterGrade, points: resultItem.grade.points, title: Title }); 


         console.log(jsonObj); 
        } 


      }); 





     } 

ответ

0

Ваш объект находится вне области видимости, в анонимной функции обратного вызова. Одним из возможных способов решения этой проблемы является создание функции обратного вызова и передать его в:

var gradeBookItemCallback = function(gradeableItemTitle, next){ 
    return function(resultItem){ 
    //do something with gradeableItemTitle and/or resultItem. 
    next(); //call the callback. You could pass whatever you wanted to here as well. 
    } 
}); 

Он будет использоваться как это:

gradeBookbRestService.loadGradeBookItemByItemId(token, gradableGBItems[i].id, gradeBookItemCallback(Title, callbackFunctionHere)); 
Смежные вопросы