我不确定这是否可能,但我想在MXML的子组件上添加一个事件监听器。像这样:
我的组件
<s:Group>
<s:Button id="myBtn" label="click me" />
</s:Group>
主要应用
<local:MyComponent>
<local:myBtn click="doSomething()" />
</local:MyComponent>
我知道我可以在代码中执行此操作,我只想知道是否可以在MXML中执行此操作。如果可能,那么正确的语法是什么?
答案 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>
通常,我不建议尝试深入研究组件,以便将侦听器放在组件子组件调度的事件上。这是封装的突破。父组件不应该知道子组件的实现细节。