Как получить доступ (ссылка) к пользовательскому itemRenderer в TileList? - PullRequest
2 голосов
/ 01 июня 2011

У меня есть КП TileList с 10 предметами.Как я могу вызвать функцию в 4. элементе (например) извне, где я создал cp TileList?

Спасибо

1 Ответ

0 голосов
/ 01 июня 2011

UPDATE:

Исходя из ваших комментариев, это должно быть еще проще. Вы бы просто перебрали каждую из строк в dataProvider вашего List и сделали бы все необходимые изменения. В конце функции просто вызовите функцию refresh для ArrayCollection. Используя мой пример ниже:

public function myFunction(evt:Event):void
{
  for each (var o:MyObject in myDataProvider)
  {
    o.someProperty = "Updated";
  }

  myArrayCollection.refresh();
}

После обновления ArrayCollection вызов функции refresh должен привести к тому, что List также обновит средства визуализации элементов.

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Звучит так, как будто вы хотите вызвать функцию за пределами ItemRenderer, когда в ItemRenderer нажата кнопка или что-то еще, но все еще можно получить доступ к данным для элемента, который был нажат.

Если я правильно понял, вам все равно не нужно было бы обращаться к самому ItemRenderer. Вы можете просто сделать что-то вроде этого (просто пример):

<fx:Script>
  <![CDATA[

  public function myFunction(evt:Event):void
  {
    trace(MyObject(myList.selectedItem).someProperty.toString());
  }

  ]]>
</fx:Script>

<mx:List id="myList" dataProvider="{myDataProvider}" >
  <mx:itemRenderer>
    <fx:Component>
      <mx:CheckBox selectedField="IsSelected" change="outerDocument.myFunction(event);" />
    </fx:Component>
  </mx:itemRenderer>
</mx:List>

Если вам do необходимо передать совершенно отдельный параметр, который не хранится в dataProvider вашего List, просто передайте его в качестве аргумента changeHandler для изменения.

change="outerDocument.myFunction(event, someOtherValue);"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...