У меня есть глобальная переменная 'csId' типа string. В приведенном ниже коде функции drawChart(), для цикла for, переменная csID должна быть установлена на «1» с помощью modelLocator, когда i = 0 и csId должно быть установлено на «2» с помощью modelLocator, когда i = 1. (учитывая lengh = 2). Предупреждение в drawchart() (для csId), похоже, печатает правильные значения «csid» (как 1, так и 2), но в dataFunction() «columnSeries_labelFunc». Я всегда получаю значение CsId Alert как «2» и никогда не как '1'.глобальная переменная не получает заданные значения в другой функции в flex
Вы можете найти код ниже: Функция
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;
}
Пожалуйста, помогите !!!
Это происходит потому, что код выполняется асинхронно, когда значение csID уже «2», когда вызывается предупреждение в вашей функции columnSeries_labelFunc. – Angelo