我想将数据发送到组合框项目渲染器,以便它同时具有下拉数据和selectedIndex。 请注意,combobox itemrenderer是List的一部分....所以如果数据是arraycollection,我试图使用list comprehension正确映射....
我实施的解决方案
假设组合框数据在ArrayCollection var d中。我创建了一个新的ArrayCollection d1,使d1项为{d:d,dSelectedIndex:whatever_val_u_determined}
在列表中,我设置了dataProvider = {d1}
在上面列表项的itemrenderer中,我设置了dataProvider = {data.d}和selectedIndex = {data.dSelectedIndex}
答案 0 :(得分:0)
itemRenderer从ComboBox的dataProvider获取数据。例如,如果您像这样创建ComboBox
<s:ComboBox itemRendererFunction="myFunction"
labelField="lastName">
<s:dataProvider>
<mx:ArrayList>
<fx:Object firstName="Steve" lastName="Smith"/>
<fx:Object firstName="John" lastName="Jones"/>
<fx:Object firstName="Mary" lastName="Moore"/>
</mx:ArrayList>
</s:dataProvider>
</s:ComboBox>
然后你的itemRenderer将获得带有params firstName和lastName的对象的数据变量。
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" height="30">
<fx:Script><![CDATA[
public var country:String;
]]></fx:Script>
<s:Label text="{data.firstName + country}"/>
data.firstName将是&#34;史蒂夫&#34;或&#34;约翰&#34;或者&#34;玛丽&#34;
如果您想向itemRenderer发送其他参数,可以使用ComboBox的itemRendererFunction
private var Rend1:ClassFactory = new ClassFactory(MyItemRenderer);
private function myFunction(item:Object):ClassFactory {
Rend1.properties = {country: "USA"};
return Rend1;
}
现在在你的itemRenderer变量&#34; country&#34;将是&#34; USA&#34;