在组件的子级上添加MXML事件侦听器

时间:2013-05-21 11:57:43

标签: actionscript-3 flex mxml

我不确定这是否可能,但我想在MXML的子组件上添加一个事件监听器。像这样:

我的组件

<s:Group>
    <s:Button id="myBtn" label="click me" />
</s:Group>

主要应用

<local:MyComponent>
    <local:myBtn click="doSomething()" />
</local:MyComponent>

我知道我可以在代码中执行此操作,我只想知道是否可以在MXML中执行此操作。如果可能,那么正确的语法是什么?

1 个答案:

答案 0 :(得分:1)

这是可能的,但需要大量设置。

首先将事件元数据添加到MyComponent:

<s:Group>
  <fx:Metadata>
        [Event(name="click", type="flash.events.MouseEvent")]
  </fx:Metadata>
    <s:Button id="myBtn" label="click me" />
</s:Group>

理论上,您应该确保您的组件也调度click事件;但是,由于默认情况下点击会冒泡,因此您无需为该事件执行任何其他操作。

现在,您的主要组件将以MXML代码提示显示事件,编译器不会抱怨:

<local:MyComponent click="doSomething()>
</local:MyComponent>

通常,我不建议尝试深入研究组件,以便将侦听器放在组件子组件调度的事件上。这是封装的突破。父组件不应该知道子组件的实现细节。