Flex 4 Bubbling пользовательское событие - PullRequest
0 голосов
/ 30 ноября 2009

Как создать всплывающее пользовательское событие во Flex 4?

Чтобы создать и предоставить пользовательское событие в MXML, необходимо объявить его в компоненте, который отправит событие, с помощью следующей строки:

<fx:Metadata>
        [Event(name="select", type="my.engine.events.SelectionEvent")]
</fx:Metadata>

Это позволяет вам:

<my:CustomComponent select="doSomething()"/>

Тем не менее, как вы делаете этот пузырь вверх. Я хочу сделать это

<s:DataGroup select="doSomethingForAll();">
   <s:itemRenderer>
      <fx:Component>
         <my:CustomComponent/>
      </fx:Component>
   </s:itemRenderer>
</s:DataGroup/>

Спасибо!

Ответы [ 4 ]

1 голос
/ 20 августа 2012

Ваше Пользовательское событие должно продлить Событие. В конструкторе вы найдете name:string, bubbling:boolean и cacellable:boolean в качестве аргументов.

Установите параметр барботирования на true. В вашем примере тег метаданных должен быть в вашем теге DataGroup.

0 голосов
/ 03 января 2010

Вы можете либо расширить контейнер s: DataGroup с помощью заданной пользовательской информации метатегов, встроенной в расширенный класс, либо вызвать метод doSomethingForAll () из обработчика события itemRenderer «select», см. Код ниже:

<s:DataGroup         
    dataProvider="{instructions}"        
    width="100%">        
    <s:itemRenderer>
        <fx:Component>
            <my:CustomComponent                    
                select="rendererSelect()">
                <fx:Script>
                    <![CDATA[

                        protected function rendererSelect():void
                        {
                            outerDocument.doSomethingForAll();
                        }

                    ]]>
                </fx:Script>
            </my:CustomComponent>
        </fx:Component>
    </s:itemRenderer>                
</s:DataGroup> 
0 голосов
/ 12 августа 2010

Поймать событие выбора dataGroups и затем отправить doSomethingForAll ()

Убедитесь, что у события doSomethingForAll свойство пузырька установлено в значение true.

Тогда будут вызываться любые слушатели событий, прослушивающие doSomethingForAll над ним в списке отображения.

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

Одно из возможных решений, но не совсем то, что я искал, - добавить эту строку кода на уровне DataGroup.

this.addEventListener(SelectionEvent.SELECTED, onSelect);

Это гарантирует, что все события, инициированные CustomComponent, будут обработаны.

...