我有以下s:列表
<s:List
id="lstOther"
borderVisible="false"
width="100%" height="100%"
dataProvider="{this.handler.itemRendererType}"
labelFunction="labelFunction"
itemRendererFunction="itemRendererFunction">
</s:List>
itemRendererFunction和labelFunction的函数如下所示:
private function itemRendererFunction(item:Object):IFactory {
var clazz:Class = DefaultItemRenderer;
switch(item.data) {
case "Security Unit":
clazz = CheckBox;
break;
default:
clazz = CheckBoxEditLabel;
}
return new ClassFactory(clazz);
}
private function labelFunction(item:Object):String {
return "testing";
}
我的数据提供者(dataProvider =“{this.handler.itemRendererType}”)的组成如下:
public var itemRendererType:ArrayCollection = new ArrayCollection([
{name:"otherLabel1", data:"Security Unit"},
{name:"otherLabel2", data:"Test 1"},
{name:"otherLabel3", data:"Test 2"}
]);
我首先尝试将s:List中的labelField设置为'name'。列表控件中没有显示任何内容。如上所示,我尝试使用标签函数并返回硬编码值(“测试”)。仍然没有出现。
为什么标签的文字没有显示?
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
我的直接猜测是this.handler
为空;你应该调试,看看为什么(无论如何是处理程序?)。你是正确的使用labelField =“name”,这应该工作,但如果你没有任何数据,将不会显示任何内容。另外,我很确定你的itemRendererFunction不能正常工作,因为它需要返回扩展s:ItemRenderer的组件。
答案 1 :(得分:0)
this.handler 不为空。 handler 是定义itemRendererType的actionscript类。
答案 2 :(得分:0)
以下项目渲染器适用于您的样本:
<?xml version="1.0" encoding="utf-8"?>
<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:CheckBox label="{label}" />
</s:ItemRenderer>