문자열 유형의 전역 변수 'csId'가 있습니다. drawChart() 함수 아래의 코드에서 for 루프에서 i = 0 일 때 modelLocator에서 csID 변수를 '1'로 설정하고 i = 1 일 때는 modelLocator에서 csId를 '2'로 설정해야합니다 (길이 = 2). drawchart() (csId)의 경고가 올바른 'csid'값 (1과 2)을 인쇄하지만 dataFunction()의 columnSeries_labelFunc에서 '항상 csId Alert 값을'2 ' '1'.전역 변수가 다른 변수의 적절한 값으로 설정되지 않음
찾아주세요 아래 코드 :
drawchart() 함수 ::
public function drawChart():void
{
var cs:ColumnSeries= new ColumnSeries();
var lenght:Number=AppModelLocator.getInstance().ctsModel.productSummary.getItemAt(0).collMgmtOfcList.length;
myChart.series = [cs];
var tempObj:Object;
for(csLoop=0;csLoop<lenght;csLoop++)
{
cs = new ColumnSeries();
this.csId= new String(String(AppModelLocator.getInstance().ctsModel.productSummary.getItemAt(0).collMgmtOfcList[csLoop]));
Alert.show("csId="+this.csId);
cs.id=this.csId;
cs.displayName = 'Exposure';
cs.dataFunction=columnSeries_labelFunc;
myChart.series[csLoop] = cs;
}
columnSeries_labelFunc() 함수 ::
private function columnSeries_labelFunc(series:Series, item:Object, fieldName:String):Object {
var col:Number=0;
Alert.show("value of csid in columnSeries_labelFunc="+this.csId);
if(fieldName == "yValue" && series.id==csId){
return(item.exposureUSDList[0]);
}else if(fieldName == "yValue" && series.id==csId) {
return(item.exposureUSDList[1]);
}else if(fieldName == "xValue"){
return(item.rptType);
}else
return null;
}
제발 도와주세요!
경고는 열 Series_labelFunc 함수에서 호출 될 때 csID 값이 이미 "2"라는 코드가 비동기 적으로 실행되기 때문에 발생합니다. – Angelo