2011-01-19 24 views
0

在ActionScript中,我削减我的XML到一系列节点,所有的形成是这样的:使用XML子节点,如星火列表标签的itemRenderer

<option letter="A"> 
    <letter>A</letter> 
    <response>Thank you</response> 
    <posFeed>Excellent</posFeed> 
    <negFeed>Terrible</negFeed> 
    <score>-1</score> 
    <elimOptions>B</elimOptions> 
</option> 

当我设置此系列的数据提供程序为我的星火列表使用带有Spark标签的自定义项目渲染器,我设置了label.text = {data},它将每个完整的节点集合显示为列表项目。

如果我不希望事先将XML缩小到节点(我希望完整的集合用于我必须执行的其他功能),那么如何才能将响应节点设置为数据用于itemRenderer中的标签?我尝试设置标签文本= {} data.response,但不工作(全套节点仍然显示为每个项目

+1

`label.text = xml.response.text();` – alxx 2011-01-19 09:11:27

+0

在火花的标签,我现在有文字= {数据},并尝试过text = {data.response}。然后,我尝试了text = {data.xml.response.text()},但它不起作用 – Gregir 2011-01-19 22:21:01

回答

0

这样的:

<fx:Declarations> 
    <fx:XML id="data"> 
     <options> 
      <option letter="A"> 
       <letter>A</letter> 
       <response>Thank you</response> 
       <posFeed>Excellent</posFeed> 
       <negFeed>Terrible</negFeed> 
       <score>-1</score> 
       <elimOptions>B</elimOptions> 
      </option> 
      <option letter="B"> 
       <letter>B</letter> 
       <response>Thank you B</response> 
       <posFeed>Excellent B</posFeed> 
       <negFeed>Terrible B</negFeed> 
       <score>-1</score> 
       <elimOptions>B</elimOptions> 
      </option> 
     </options> 
    </fx:XML> 
</fx:Declarations> 

<s:List labelField="response"> 
    <s:dataProvider> 
     <s:XMLListCollection source="{data.option}" /> 
    </s:dataProvider> 
</s:List> 

我要补充一点,我这样做的时候,我没有使用自定义项目渲染任何麻烦:

<s:List itemRenderer="DataItemRenderer"> 
    <s:dataProvider> 
     <s:XMLListCollection source="{data.option}" /> 
    </s:dataProvider> 
</s:List> 

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       autoDrawBackground="true"> 

    <s:Label text="{data.response}"/> 

</s:ItemRenderer>