0

基于以下数据

public var dataArray:ArrayCollection = new ArrayCollection( [
    { label: "None", data: '' },
    { label: "Some Data", data: 
        { 
            label: "String tested at IF", data: "20"
        }
    }
]);

然后我根据用户从下拉列表中选择的位置创建一个新的 ArrayCollection obj

var skillArrayCollection:ArrayCollection  = ArrayCollection(runtimeComponents[dataArray[classSelect.selectedIndex].data]);

我正在循环一个 ArrayCollection 对象,如下所示:

  for each (var item:Object in skillArrayCollection[charSkillOne.selectedIndex]) { 
        if (item.label == "somelabel") {
           ret = ret + Number(item.data);
          }
  }

当 if 语句进行检查时,它匹配字符串 test 并返回正确的结果;IT 还返回错误:ReferenceError: Error #1069: Property label not found on String and there is no default value。

我不明白 flex 将如何出错并返回我要求的结果?

4

1 回答 1

0

在您的第一个对象中:

{ label: "None", data: '' },
{ label: "Some Data", data: 
    { 
        label: "String tested at IF", data: "20"
    }
}

data 是一个字符串,在您的第二个对象中, data 是一个具有标签属性的对象。

当您的循环遍历每个元素时,第一个元素会导致此错误,因为当您在其上调用 object.data.label 时,您试图获取字符串的标签属性,因此会出现错误(对于第二个对象,如果它是到达那里它不会出错)。正如其他人所说,这个问题忽略了 runtimeComponents 的内容,所以很难说这是肯定的问题,但它似乎是正确的。

于 2012-06-28T15:54:53.800 回答