0

以下のデータに基づく

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

次に、ユーザーがドロップダウンリストから選択した位置に基づいて新しいArrayCollectionobjを作成します

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ステートメントがチェックを行うと'文字列テストと一致し、正しい結果を返します。ITはエラーも返します:ReferenceError:エラー#1069:プロパティラベルが文字列に見つかりません。デフォルト値がありません。

flexがどのようにエラーを起こし、要求した結果を返すのかわかりませんか?

4

1 に答える 1

0

最初のオブジェクトで:

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

data は文字列です。2 番目のオブジェクトでは、data は label プロパティを持つオブジェクトです。

ループが各要素を通過すると、最初のオブジェクトでこのエラーが発生します。これは、 object.data.label を呼び出すと、文字列のラベル プロパティを取得しようとしているためです。そこに到達してもエラーにはなりません)。他の人が述べているように、質問は runtimeComponents の内容を除外しているため、これが確かに問題であるとは言い難いですが、正しいようです。

于 2012-06-28T15:54:53.800 に答える