我有一个表示数据库表的对象。我想迭代这个对象并打印每个值。我可以用它做什么?
我想在我的mxml not actionscript
中执行此操作为每个对象属性我想创建一个输入字段
答案 0 :(得分:12)
查看有关Flex 3循环的文档。如果你这样做,你会发现:
<强>
for..in
强>
for..in
循环遍历对象的属性或数组的元素。例如,您可以使用for..in循环来遍历泛型对象的属性(对象属性不以任何特定顺序保存,因此属性可能以看似随机的顺序出现):
var myObj:Object = {x:20, y:30};
for (var i:String in myObj)
{
trace(i + ": " + myObj[i]);
}
// output:
// x: 20
// y: 30
我建议您先查看DataGrid和自定义ItemEditors,而不是尝试为每个对象创建输入字段。
答案 1 :(得分:4)
我同意这个答案没用。它只适用于通用对象,而不是用户声明的 对象。
但是,这里有一些代码应该/可以使用上面建议的describeType。 (而且我并不认为这太复杂了)。请注意,只公开公共属性/方法等:
var ct:CustomObject = new CustomObject();
var xml:XML = describeType(ct);
for each(var accessor in xml..accessor) {
var name:String = accessor.@name;
var type.String = accessor.@type;
trace(ct[name]);
}
答案 2 :(得分:2)
“for ... in”的问题在于它只对动态属性进行迭代。也就是说,如果你的对象被定义为一个类(而不是动态的),“for..in”将不会给出任何东西。
ActionScript文档建议将describeType()用于固定属性,但对于这个简单的任务看起来过于复杂......
答案 3 :(得分:1)
您可以将其写为actionscript,但将其包含在带有脚本标记的mxml文件中:
<mx:Script>
<![CDATA[
public function LoopAndPrint() : void
{
//your code here
}
]]>
</mx:Script>