簡體   English   中英

通過數據綁定將參數從flex main傳遞到flex(4)組件

[英]Passing a parameter from flex main to a flex(4) component with data binding

我有一個主要的mxml文件(flex4),並希望將參數(user_name)傳遞給名為components的目錄中的一個組件。

當我運行程序時,user_name不會從主文件發送到組件文件。 (有趣的是,如果使該組件可見,則可以看到已傳遞參數)

flex / actionscript的新手,這個參數傳遞(在沒有幫助的情況下)相當麻煩。

因此,非常感謝您的幫助。

TIA。

我黑掉了很多大文件,以獲取以下兩個文件:

主要

<?xml version="1.0" encoding="utf-8"?>
<s:Application             
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
           xmlns:fx="http://ns.adobe.com/mxml/2009"                
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:components="components.*">

 <mx:Button  id="editAccount" label="Edit Account"  fontSize="16" color="#000000" x="100" y="125" click="AccountForm(event)" />

 <components:editAccountForm visible="false"  user_name = "username from main" /> 

<fx:Script>
    <![CDATA[
        import components.editAccountForm;
        import mx.managers.PopUpManager;

        private function AccountForm(e:MouseEvent):void
        {
          var win3:editAccountForm = new editAccountForm();
          PopUpManager.addPopUp(win3,this,true);
          PopUpManager.centerPopUp(win3);   
        }       
    ]]>
</fx:Script>
</s:Application>

組件文件

<?xml version="1.0" encoding="utf-8"?>

<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" 
            layout="vertical" title="Edit Account Details" x="50" y="600" >


<mx:Form width="100%" height="100%">
    <mx:FormItem label="">
        <mx:Label width="300" textAlign="center" text="{user_name}"/>
    </mx:FormItem>
    <mx:FormItem label="Enter your new Email Address">
        <mx:TextInput id="email_address2" width="300" maxChars="128" contentBackgroundColor="#F5DC0C"/>
    </mx:FormItem>
</mx:Form>
<mx:HBox width="100%" horizontalAlign="center">
  <mx:Button id="close" label="Close" click="PopUpManager.removePopUp(this)" />
</mx:HBox>


<mx:Script>
    <![CDATA[
      [Bindable] 
      public var user_name:String = "username from Component";      
    ]]>
</mx:Script>


<mx:Script>
    <![CDATA[
        import mx.core.IFlexDisplayObject;
        import mx.events.CloseEvent;
        import mx.managers.PopUpManager;

        private function closeWindow(e:CloseEvent):void 
        {
          PopUpManager.removePopUp(e.target as IFlexDisplayObject);
        }
    ]]>
</mx:Script>


</mx:TitleWindow>

如果您只是想將主應用程序中的user_name獲取到TitleWindow組件中,則在實例化win3之后只需設置win3.user_name = user_name。 如果您希望將其綁定到新實例化的win3(如果希望user_name更改,則可以這樣做),那么您需要查看BindUtils幫助器類。

在應用程序和對話框之間來回獲取數據的典型方法是在實例化對話框后設置值,然后在對話框中添加偵聽器,以便在發生某些更改時通知您的應用程序。 例如,如果您正在偵聽Close事件,則可以從事件中獲取值,如下所示:(在應用程序的事件處理程序中為event.currentTarget作為EditAccountForm).user_name。

另一個常見的方法是讓窗口調度一個自定義事件(您的主應用程序向其對話框添加了一個偵聽器),該事件包含user_name的新值。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM