flex 3迭代对象值

时间:2009-03-23 16:44:18

标签: flex3 iteration loops

我有一个表示数据库表的对象。我想迭代这个对象并打印每个值。我可以用它做什么?

我想在我的mxml not actionscript

中执行此操作

为每个对象属性我想创建一个输入字段

4 个答案:

答案 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>