#actionscript-3 #apache-flex
#actionscript-3 #apache-flex
Вопрос:
Я пытаюсь создать выпадающий список с несколькими выборками, расширив выпадающий список
private var COLOR_ARRAY:Array=
[{label:"Red", data:"#FF0000"},
{label:"Green", data:"#00FF00"},
{label:"Blue", data:"#0000FF"}];
[Bindable]
public var colorAC:ArrayCollection;
private function initData():void {
colorAC=new ArrayCollection(COLOR_ARRAY);
}
]]>
</fx:Script>
<local:MultiSelectionDropDown
width="300"
requireSelection="false"
itemRenderer="MultiSelectItemRenderer"
skinClass="MultiSelectionDropDownListSkin"
dataProvider="{colorAC}"
labelField="label"
/>
И ниже приведен мой код рендеринга
<s:HGroup width="100%" verticalAlign="middle">
<s:RichText id="labelDisplay"
text="{data}"
textAlign="left"
styleName="listItem"
verticalAlign="middle"
lineBreak="toFit"
paddingTop="10"
paddingBottom="10"
color.hovered ="0xffffff"
color.selected="0xffffff"
paddingLeft="10"
paddingRight="10"
horizontalCenter="0" verticalCenter="1">
</s:RichText>
<mx:Spacer width="100%" />
<s:CheckBox id="checkbox" />
</s:HGroup>
Я не могу отобразить метку в своем раскрывающемся списке.. то, что я получаю здесь, это [object Object] … не могу понять, что я делаю неправильно
Ответ №1:
Это потому, что вы задаете текст для объекта данных.
text="{data}"
Что делает RichText, так это вызывает метод toString() для этого объекта, следовательно, resultnig в «object Object». Вам необходимо указать свойство данных, которые должны использоваться для отображения метки, например
text="{data.title}"
Вы также можете переопределить метод toString() внутри вашего объекта value и вернуть любую строку, которую вам нужно отобразить.
override public toString():String
{
return "foobar";
}