0

カスタム SkinnablePopUpContainer から単一の値を送り返すことはできますが、複数の値を持つ配列を作成元のビューに送り返すことはできませんか?

どのように私はそうすることができますか?

SkinnablePopUpContainer のコードは次のとおりです: activityDetails Array を送り返したい

        import spark.events.IndexChangeEvent;

        import valueObjects.Model;

        /* Variables */

        public var model:Model = new Model();
        private var selectCatStmt:SQLStatement;
        private var selectCatSQL:String = 'SELECT category FROM Activity GROUP BY category';
        private var activityStmt:SQLStatement = new SQLStatement();
        private var activitySQL:String = 'SELECT * FROM Activity WHERE category = :category';

        private var activityDetails:Array = [{category:'', activityId:0, hours:0}];  // I want to send this back to the view that creates this popup

        private function getCategories():void
        {
            selectCatStmt = new SQLStatement();
            selectCatStmt.sqlConnection = model.connection;
            selectCatStmt.text = selectCatSQL;
            selectCatStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            selectCatStmt.addEventListener(SQLEvent.RESULT, selectResult);
            selectCatStmt.execute();
        }

        private function selectResult(event:SQLEvent):void
        {
            var result:SQLResult = selectCatStmt.getResult();

            if(result.complete)
            {
                if(result.data)
                {
                    categoriesList.dataProvider = new ArrayCollection(result.data);
                }
            }   
        }

        private function errorHandler(event:SQLErrorEvent):void
        {
            trace ("\nError message: " + event.error.message);
            trace("\nDetails: " + event.error.details);
        }

        /* Event Handlers */

        protected function categoryList_changeHandler(event:IndexChangeEvent):void
        {
            selectCatStmt = new SQLStatement();
            activityStmt.sqlConnection = model.connection;
            activityStmt.text = activitySQL;
            activityStmt.parameters[":category"] = categoriesList.selectedItem.category;
            activityStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            activityStmt.addEventListener(SQLEvent.RESULT, activityResult);
            activityStmt.execute();
        }

        private function activityResult(event:SQLEvent):void
        {
            var result:SQLResult = activityStmt.getResult();

            if(result.complete)
            {
                if(result.data)
                {
                    activitiesList.dataProvider = new ArrayCollection(result.data);
                }
            }   
        }

        protected function addActButton_clickHandler(event:MouseEvent):void
        {
            activityDetails[0]["category"] = categoriesList.selectedItem.category;
            activityDetails[0]["activityId"] = activitiesList.selectedItem.id;
            activityDetails[0]["hours"] = Number(duration.text);

            this.close(true,activityDetails);
        }

        protected function skinnablepopupcontainer1_creationCompleteHandler(event:FlexEvent):void
        {
            getCategories();
        }

    ]]>
</fx:Script>

<s:layout>
    <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>

<flextras:DropDownList id="categoriesList" labelField="category" width="100%" height="34" prompt="Select Type" change="categoryList_changeHandler(event)"/>
<s:List id="activitiesList" itemRenderer="renderers.ActivitiesList" width="100%" height="100%"/>
<s:HGroup verticalAlign="middle" horizontalAlign="left" width="100%">
    <s:Label text="Activity duration in minutes : "/>
    <s:TextInput id="duration" width="50"/>
</s:HGroup>
<s:Button id="addActButton" label="Set" click="addActButton_clickHandler(event)"/>

ここにポップアップクローズハンドラがあります

        protected function activitySelect_closeHandler(event:PopUpEvent):void
        {
            if(!event.commit)
            {
                return;
            }

            activities.push(event.data);
            trace(activities);
        }
4

1 に答える 1

0

メソッドの 2 番目の引数は、closeすべてのデータ型 "*" を取ります。したがって、配列またはオブジェクトを送り返すことは問題ではありません。

PopUp.CLOSEポップアップ ウィンドウでイベントをリッスンする必要があります。はへactivityDetailsdataプロパティになりPopUpEventます。

于 2013-10-29T15:58:46.927 に答える