2

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

我的组件

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

主要应用

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

我知道我可以在代码中做到这一点,我只想知道是否可以在 MXML 中做到这一点。如果可能,正确的语法是什么?

4

1 回答 1

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>

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

于 2013-05-21T12:42:39.460 回答