【问题标题】:passing values between custom components in Flex - mxml [closed]在 Flex 中的自定义组件之间传递值 - mxml [关闭]
【发布时间】:2010-10-03 03:39:42
【问题描述】:

如何将自定义组件中的值传递回 main.mxml? 我需要这样做来传回一个数组集合

【问题讨论】:

    标签: apache-flex components


    【解决方案1】:

    知道了;只需要导入mx.core.Application;

    【讨论】:

      【解决方案2】:

      您可以使用静态 Application.application.yourPublicMethodName() 或 .yourPublicPropertyName = n 直接调用 Application,但您也可以考虑使用事件框架,以保持组件松散耦合。由于您的组件根据定义是一个事件分发器,您可以简单地从其中分发一个事件,并让您的 Application 类监听该事件。

      在 MXML 中,对于组件类,它看起来像这样:

      <?xml version="1.0" encoding="utf-8"?>
      <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
      
          <mx:Metadata>
              [Event(name="buttonClicked", type="flash.events.Event")]
          </mx:Metadata>
      
          <mx:Script>
              <![CDATA[
      
                  public var someValue:int = 0;
      
                  private function buttonClick():void
                  {
                      someValue = 1;
                      dispatchEvent(new Event("buttonClicked"));
                  }
      
              ]]>
          </mx:Script>
      
          <mx:Button label="Click Me" click="buttonClick()" />
      
      </mx:Canvas>
      

      ...对于应用程序,如下所示:

      <?xml version="1.0" encoding="utf-8"?>
      <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
      
          <mx:Script>
              <![CDATA[
      
                  import mx.controls.Alert;
      
                  private function myComponent_buttonClicked(event:Event):void
                  {
                      Alert.show(event.currentTarget.someValue.toString());
                  }
      
              ]]>
          </mx:Script>
      
          <local:MyComponent buttonClicked="myComponent_buttonClicked(event)" />
      
      </mx:Application>
      

      组件类中的 Event 元数据标签告诉编译器组件调度了一个 flash.events.Event 类型的事件(“buttonClicked”),它将它作为一个事件暴露在 MyComponent 标签上;然后,您需要做的就是为该事件连接一个侦听器,并通过该事件的 currentTarget 属性,您可以访问该组件的所有公共数据。

      只是想我会为你提供一个有趣的选择。希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 2011-02-09
        • 2013-04-25
        • 2012-12-09
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        相关资源
        最近更新 更多