проблема при использовании выпадающего списка flex с itemrenderer

#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";
}