【问题标题】:How to dispatch event between Components in Flex?如何在 Flex 中的组件之间分派事件?
【发布时间】:2009-09-04 11:16:52
【问题描述】:

我是 Flex 的新手。我的问题是如何在组件之间分派事件?据我所知,Flex 只会将事件冒泡到自身或其父级。

我就是这样的情况:

    <mx:Application>
        <com:Component1 id="comp1" />
        <com:Component2 id="comp2" />
    </mx:Application>

在 Component2.mxml 中 我还有另外两个组件,称为 A 和 B

我希望 comp1 发送带有参数的事件,根据参数可以对 comp2 中的 A 和 B 进行一些更改。如何在 comp2 中获取事件?我知道 Cairngorm 可以有所作为,但我没有现在不想使用它。有人可以帮我吗?非常感谢!

最好的,硕

【问题讨论】:

    标签: apache-flex flex3


    【解决方案1】:

    如果应用程序触发冒泡事件,它将通过整个层次结构、comp1 和 comp2 以及它们各自的子级传递。 Comp1 应该携带元数据:

    [Event(name="someEvent", type="flash.events.Event")]
    

    现在当 comp1 派发事件时,它将在父级中处理,如下所示:

    <com:Component1 id="comp1" someEvent="this.dispatchEvent(event,true)"/>
    

    就像一个中继。

    我认为最好使用适当的 MVC 结构来处理这个问题,例如 Robotlegs、mate、swiz、PureMVC 等。

    【讨论】:

      【解决方案2】:
         <mx:Application>
              <com:Component1 id="comp1" click="comp2.handleComp1Click()"/>
              <com:Component2 id="comp2" click="comp1.handleComp2Click()"/>
          </mx:Application>
      

      非常粗鲁,但你可以这样做。对于更复杂的情况,在应用程序级别编写一个(或多个)函数,让它们处理事件,然后将您需要的内容传播给子级。在您的示例中,您需要在应用程序级别做一些事情。

      是的,合适的架构可能会更好。

      【讨论】:

      • 谢谢,Glenn。您的解决方案是可行的。Comp1 调度一个事件,将其提升到我侦听该事件的应用程序级别,并将其处理程序指向 Comp2 的 handleComp1Handler。
      猜你喜欢
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2011-08-26
      • 2010-09-05
      • 2013-04-30
      • 2012-01-19
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多