У меня есть список с пользовательским ItemRenderer. ItemRenderer содержит флажок и метку. Компонент со списком имеет флажок «Выбрать все». Когда установлен флажок «Выбрать все», он отправляет событие, которое должен прослушивать каждый элемент, чтобы выбрать свой собственный флажок. Eventenerener добавлен в creationComplete каждого элемента, и событие отправляется правильно, когда установлен флажок «Выбрать все», но слушатель в пользовательском ItemRenderer не прослушивает.Flex3: Custom Item Renderer не прослушивает события, отправленные родителем
Как заставить ItemRenderer прослушивать событие, отправленное в его родительском? ??
Я добавлю некоторые примеры кода для уточнения:
------- container ----------
<mx:VBox>
<mx:Script>
<![CDATA[
public var user1 = new User(1, "Jack");
public var user2 = new User(2, "John");
public var user3 = new User(3, "Mary");
[Bindable]
public var users:ArrayCollection = new ArrayCollection([user1], [user2], [user3]);
public static const SELECT_ALL_USERS:String = "selectAllUsers";
private function selectAllChangeHandler():void
{
if (selectAll.selected)
dispatchEvent(new Event(SELECT_ALL_USERS,true));
}
]]>
</mx:Script>
<mx:CheckBox id="selectAll" change="{selectAllChangeHandler()}" />
<mx:List dataProvider="{users}" itemRenderer="myRenderer" />
</mx:VBox>
------- renderer ----------
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox creationComplete="{init()}">
<mx:Script>
<![CDATA[
private function init():void
{
addEventListener (Container.SELECT_ALL, selectAllHandler, false, 0, true);
}
private function selectAllHandler():void
{
checkbox.selected=true;
}
private function selected(id:int):Boolean
{
return id==1 || id==3;
}
]]>
</mx:Script>
<mx:CheckBox id="checkbox" selected="{selected(data.id)}" />
<mx:Label text="{data.name}" />
</mx:HBox>
Пожалуйста, обратите внимание, что пользователи ArrayCollection или его объекты, содержащие пользователей не могут быть изменены, потому что мне нужны значения позже. Итак, при нажатии кнопки «selectAll» каждый флажок в списке также должен быть проверен.