所以我仍然试图绕过Flex和OOP,现在我被困住了。这是我目前正在使用的代码。
var labs:ArrayCollection = new ArrayCollection();
var sets:ArrayCollection = new ArrayCollection();
var labsArray:Array = ["ProDPI","WHCC","Tin"];
var setsArray:Array = [ ["Set01","Set02","Set03","Set04"],["Set11","Set12","Set13","Set14"], ["Set21","Set22","Set23","Set24"] ];
var objLab:Object = new Object;
objLab.labName = labsArray[0];
objLab.setFolders = undefined;
labs.addItem(objLab);
for (var i:int = 0; i < setsArray.length; i++) {
var objSets:Object = new Object;
objSets.setName = setsArray[i];
sets.addItem(objSets);
objLab.setFolders = objSets;
}
labFolderList.labelField="labName";
labFolderList.dataProvider=labs;
setFolderList.labelField="setFolders";
setFolderList.dataProvider=sets;
objLab对象正在按照我的意愿返回。 objSets在我的ComboBox中显示为对象Object。应用程序是ComboBox#1将由labsArray填充,它正在运行。根据数组中[0,1,2]的选择,这将从sets数组中调用匹配位置的数组。
最后,通过选择ComboBox#1,第二个ComboBox#2将更改为匹配选择。
有关如何使对象对象正确呈现的任何帮助都会有很大帮助。此外,如果我的执行不是最好的方法来做任何方向(链接/文档)我也会采取。提前谢谢。
答案 0 :(得分:0)
我根据您想要完成的内容的假设编辑了原始代码,我将Array对象直接添加到被分配了dataprovider的集合中,在这种情况下,您应该看到调用的.toString()方法的输出Object类.toString()将输出您在显示中看到的[object Object],而不是Object类。 Array .toString()方法将在数组中的每个元素上调用.toString(),并用逗号分隔它们并用花括号括起来,与定义数组时非常相似。或者你可以创建自己的类来扩展Object并使你自己的toString方法覆盖默认行为,使用Object通常不是一个很好的做法(有一些例外,这不是一个硬规则,但它往往更好地使用一个特定的类类型,甚至可能的更好的接口)。
var labs:ArrayCollection = new ArrayCollection();
var sets:ArrayCollection = new ArrayCollection();
var labsArray:Array = ["ProDPI","WHCC","Tin"];
var setsArray:Array = [ ["Set01","Set02","Set03","Set04"],["Set11","Set12","Set13","Set14"], ["Set21","Set22","Set23","Set24"] ];
var objLab:Object = new Object;
objLab.labName = labsArray[0];
objLab.setFolders = undefined;
labs.addItem(objLab);
for (var i:int = 0; i < setsArray.length; i++) {
sets.addItem(setsArray[i]);
objLab.setFolders = setsArray[i];
}
labFolderList.labelField="labName";
labFolderList.dataProvider=labs;
setFolderList.labelField="setFolders";
setFolderList.dataProvider=sets;
除了我上面解释的另一个替代方法是使用labelFunction而不是labelField,使用labelFunction每个项目:dataProvider中的对象将被传递到你的自定义labelFunction,你可以根据任何东西返回一个字符串你觉得合适的逻辑。这将是这样的:
setFolderList.labelFunction = myLabelFunction;
private function myLabelFunction(item:Object):String
{
var retString:String = "";
for(var i:int=0; i<item.setName.length; i++)
{
if(i>0)
retString += ", ";
retString += item.setName[i];
}
return retString;
}