Динамический доступ к элементам в ObjectProxy с использованием AS3 - PullRequest
0 голосов
/ 10 ноября 2009

Я пытаюсь реализовать функцию поиска в списке.

В методе сценария действия для реализации поиска я пытаюсь перебрать содержимое 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 голосов
/ 17 августа 2012

Вы можете создать расширение класса Proxy в flash.utils и сохранить в нем список имен свойств для значений, которые вы добавили в объект. По сути это будет класс OrderedObject. Если вы воспользуетесь Google, вы сможете найти фрагменты кода, чтобы показать вам, как это работает. Затем, если вы хотите найти имя назначенного свойства, у вас есть методы для этого.

0 голосов
/ 10 ноября 2009

Массив - это массив объектов. Таким образом, в любом индексе 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`
  }
}
...