이벤트 버블 링에 약간의 이상 함이 있습니다. 이는 어떻게 이것이 정상적으로 작동하는지 이해하지 못한다는 것을 의미합니다.이벤트 버블 링 이상한
DataGroup을 확장하는 구성 요소가 있으며 항목 렌더러가 이벤트를 송출 (거품)합니다.
// MyRenderer.mxml
<s:ItemRenderer>
<s:Button click='dispatchEvent(new Event('customEvent',true))' />
</s:ItemRenderer>
데이터 그룹은 이벤트에 대한 수신기를 자체에 추가합니다.
// MyDataGroup.mxml
<s:DataGroup itemRenderer="MyRenderer" creationComplete='onCreationComplete()'>
<fx:Metadata>
[Event(name='customEvent',type='flash.events.Event')]
</fx:Metadata>
<fx:Script>
private function onCreationComplete():void
{
addEventListener('customEvent',onCustomEvent);
}
private function onCustomEvent(event:Event):void
{
}
</fx:Script>
</s:DataGroup>
데이터 그룹의 상위 항목도 이벤트에 대한 수신기를 추가합니다.
// MyComponent.mxml
<s:Group>
<MyDataGroup customEvent='onCustomEventHandler()' />
</s:Group>
나는 MyDataGroup
에 등록 된 핸들러가 MyComponent
에, 먼저 핸들러를 이벤트를 잡을 것을 예상 한 것입니다.
그러나 역순으로 보겠습니다. 즉, MyComponent
에 걸려, MyDataGroup
에 걸렸습니다. 잡히면 event.phase == EventPhase.BUBBLING
.
여기 무슨 일 이니? 왜 내가이 행동을보고 있습니까?
저는 Flex 4.0을 사용하고 있습니다.
MyDataGroup에는 이벤트 수신기의 처리기 기능이 없습니다. 복사 및 붙여 넣기 오타 가정합니다, 실제로 해당 오류로 컴파일 할 코드를 기대하지 않았을 것으로 가정합니다. 사용중인 SDK 버전을 지정하십시오. 당신은 내가해야 할 일이 무엇인지 이해하고 있기 때문에, 예기치 않은 행동입니다. 각 구성 요소는 별도의 파일입니까? 아니면 일을 일렬로하고 있습니까? – JeffryHouser
감사합니다. 오류를 수정하도록 업데이트했습니다 (예, 복사 'n'붙여 넣기 문제). 모든 클래스에는 고유 한 mxml 파일이 있습니다. –