使用AS3动态访问ObjectProxy中的项目

时间:2009-11-10 14:30:54

标签: actionscript-3 flex3 dynamic-data

我正在尝试在列表上实现查找功能。

在实现find的动作脚本方法中,我试图遍历list.dataProvider的内容并获取labelField的动态内容。有没有办法使用变量的内容来从ObjectProxy中获取字段。我看到ObjectProxy有一个getProperty方法,但它受到保护。

代码段:

<mx:Canvas>
  <mx:Script>
  <![CDATA[
    [Bindable]public var data:ArrayCollection;
    [Bindable]public var name:String;

    private function findItem_():void
    {
      for (var ii:int = 0; ii < data.length; ii+)
      {
        // how do I do this????
        if (data[ii].<contents of name>.indexOf(findTI_.text) >= 0)
        {
          list.selectedIndex = ii;
          break;
        }
      }
    }
   ]]>
  </mx:Script>

  <mx:List id="list" dataProvider="{data}" labelField="{name}"; />
  <mx:TextInput id="findTI" change="findItem_"/>

</mx:Canvas>

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

数组集合是一个对象数组。因此,在data的任何索引处都会有一个对象。然后,您可以像使用点或方括号语法的任何其他对象一样访问它。

for(var i:uint = 0 ; i < data.length; ++i)
{
  var tempObject:Object = data[i];
  if(tempArray[name] == findTI.text)
  {
    //you have found a column named `name` that matches the ontents of `findTI`
  }
}

答案 1 :(得分:0)

您可以在flash.utils中创建Proxy类的扩展,并让它为您添加到对象的值保留属性名称列表。这基本上是一个OrderedObject类。如果你谷歌那么,你应该能够找到代码片段来向你展示它是如何工作的。然后,如果要查找已分配属性的名称,则可以使用这些方法。