5

我有一个代表数据库表的对象。我想遍历这个对象并打印每个值。我可以用什么来做到这一点?

我想在我的 mxml 中执行此操作而不是 actionscript

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

4

4 回答 4

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

于 2009-03-23T17:22:12.130 回答
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]);
}
于 2009-07-30T16:02:45.497 回答
2

“for...in”的问题在于它只迭代动态属性。也就是说,如果你的对象被定义为一个类(而不是动态的),“for..in”不会给出任何东西。

ActionScript 文档建议对固定属性使用 describeType(),但对于这个简单的任务来说,它看起来过于复杂……</p>

于 2009-05-27T08:53:30.600 回答
1

您可以像 actionscript 一样编写它,但将其包含在带有 script 标签的 mxml 文件中:

<mx:Script>
   <![CDATA[
       public function LoopAndPrint() : void
       {
           //your code here
       }
   ]]>
 </mx:Script> 
于 2009-03-23T16:48:20.217 回答