« Return to Thread: getting the xml data from a dispatched event

Re: getting the xml data from a dispatched event

by aot2002 :: Rate this Message:

Reply to Author | View in Thread

Heres my three mxml files two of which are under the com/ folder and get imported...hope that helps


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
        creationComplete="init()" styleName="plain" xmlns:nutrition="com.nutrition.*"
        paddingLeft="10" paddingTop="10" paddingRight="10" paddingBottom="10">
       
        <mx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.collections.ICollectionView;
                        import mx.collections.XMLListCollection;
                        import com.nutrition.MealItem;
                        import mx.controls.Alert;
                        import mx.rpc.events.FaultEvent;
                        import mx.rpc.events.ResultEvent;
                        import mx.rpc.http.HTTPService;
                        // initialize
                        private function init():void
                        {
                                //load calories
                                httpservice_load("/main.php/flexnutrition/loadcalories", this["loadcaloriesResultHandler"]);
                               
                                hsNutrition.send();
                                addEventListener('addToMeal', addToMealHandler);
                                addEventListener('removeMeal', removeMealHandler);
                                addEventListener('learnAboutThis', learnaboutthisswf);
                       
                               
                                       
                        }
                       
                        private function httpservice_load(url_src:String, resulthandler:Function):void{
                               
                                httpService.url = url_src;
                               
                                //var tmp:String = resulthandler.toString();
                                //if(tmp != "none")
                                     httpService.addEventListener(ResultEvent.RESULT, resulthandler);
                httpService.send();
                        }
                       
                        private function learnaboutthisswf(event:Event):void{
                                vfc_guy.load("/uploads/swf/" + loadswf_var);
                               
                        }
                       
                        [Bindable]
                        private var nutritionData:XML;
                        [Bindable]
                        private var maindata:XML;
                        [Bindable]
                        public var loadswf_var:String;
                        [Bindable]
                        public var createmeals_loadswf_var:String;
                       
                        //load all calories for main meals
                        private function loadcaloriesResultHandler(event:ResultEvent):void
                        {
                                maindata = event.result as XML;
                                vfc_guy.load("/uploads/swf/" + maindata.swf);
                        }
                       
                        // nutrition result handler
                        private function nutritionResultHandler(event:ResultEvent):void
                        {
                                nutritionData = event.result as XML;
                        }
                        // nutrition fault handler
                        private function nutritionFaultHandler(event:FaultEvent):void
                        {
                                Alert.show(event.toString());
                        }
                       
                        // create breakfast
                        private function createBreakfast():void
                        {
                                vsMain.selectedIndex = 1;
                                plantype = 'Breakfast';
                        }
                        // create lunch
                        private function createLunch():void
                        {
                                vsMain.selectedIndex = 1;
                                plantype = 'Lunch';
                        }
                        // create dinner
                        private function createDinner():void
                        {
                                vsMain.selectedIndex = 1;
                                plantype = 'Dinner';
                        }
                       
                        [Bindable]
                        private var plantype:String;
                       
                        [Bindable]
                        private var customMeals:ArrayCollection = new ArrayCollection;
                       
                        // addToMeal event Handler
                        private function addToMealHandler(event:Event):void
                        {
                                trace(event.target);
                                //customMeals.addItem((event.target as mealitem).mealDetails);
                                Alert.show(event.toString());
                               
                        }
                       
                        // removeMeal event Handler
                        private function removeMealHandler(event:Event):void
                        {
                                customMeals.removeItemAt(ls.selectedIndex);
                        }
                       
                ]]>
        </mx:Script>
       
        <mx:HTTPService id="hsNutrition" url="/main.php/flexnutrition/nutritioncal"
                result="nutritionResultHandler(event)"
                fault="nutritionFaultHandler(event)" resultFormat="e4x"/>
       
        <mx:HTTPService id="httpService" url="" resultFormat="e4x"/>
       
        <mx:Label id="totalcalories" text="{'Today\'s Meal Plan is based on a ' + maindata.totalcalories + ' Calorie Diet'}" fontWeight="bold" fontSize="18"/>
 
        <!--mx:Button label="Print Meal Menu" /-->
       
        <mx:ViewStack id="vsMain" width="100%" height="100%">
               
                <mx:Canvas id="nutrition_canvas" width="100%" height="100%">

                <mx:SWFLoader id="vfc_guy" source="" height="400" width="400" autoLoad="true" x="700" y="100" />
               
                <mx:HBox width="100%" height="100%">
                   
                        <mx:VBox width="40%" height="100%">
                               
                                <nutrition:MealPanel id="pnlBreakfast" meal="{nutritionData.breakfast}"
                                        title="Breakfast : Please select one meal from below({maindata.breakfast} Cal Goal)"/>
                               
                                <mx:HBox horizontalCenter="right">
                                        <mx:Button label="Create your own Breakfast" click="createBreakfast()"/>
                                </mx:HBox>
                               
                               
                                <nutrition:MealPanel id="pnlSnack1" meal="{nutritionData.snack1}"
                                        title="Snack : Please select one snack from below({maindata.snack1} Cal Goal)"/>
                            <!--mx:Button label="Create your own Lunch" click="createLunch()"/-->
                               
                                <nutrition:MealPanel id="pnlLunch" meal="{nutritionData.lunch}"
                                        title="Lunch : Please select one meal from below({maindata.lunch} Cal Goal)"/>
                               
                                <nutrition:MealPanel id="pnlSnack2" meal="{nutritionData.snack2}"
                                        title="Snack : Please select one snack from below({maindata.snack2} Cal Goal)"/>
                                <!--mx:Button label="Create your own Dinner" click="createDinner()"/-->
                               
                                <nutrition:MealPanel id="pnlDinner" meal="{nutritionData.dinner}"
                                        title="Dinner : Please select one meal from below({maindata.dinner} Cal Goal)"/>
                               
                                <nutrition:MealPanel id="pnlSnack3" meal="{nutritionData.snack3}"
                                        title="Snack : Please select one snack from below({maindata.snack3} Cal Goal)"/>
                        </mx:VBox>
       
                 
                </mx:HBox>
                </mx:Canvas>
                       
                       
                <mx:HBox width="100%" height="100%">
                       
                        <mx:VBox width="30%" height="100%">
                                <mx:HBox>
                                        <mx:Label text="{'My Custom ' + plantype}"/>
                                       
                                </mx:HBox>
                                 
                                <mx:List id="ls" dataProvider="{customMeals}" width="100%">
                                        <mx:itemRenderer>
                                                <mx:Component>
                                                        <mx:VBox>
                                                                <mx:Image width="100" height="100"/>
                                                                <mx:Button label="Remove" click="dispatchEvent(new Event('removeMeal', true))"/>
                                                                <mx:Label text="{data.serving}"/>
                                                        </mx:VBox>
                                                </mx:Component>
                                        </mx:itemRenderer>
                                </mx:List>
                        </mx:VBox>
                       
                        <mx:VBox width="100%" height="100%">
                               
                                <!--mx:Label text="Please select ONE ITEM from list below"/-->
                                <mx:ViewStack width="40%" height="410" borderStyle="inset" borderThickness="2" id="vsCreateMeals">
                           
                       <mx:VBox >
                                     <nutrition:Panelcreatemeal id="pnlCreateBreakfast" meal="{nutritionData.breakfast}"/>
                                        </mx:VBox>
                                       
                                        <mx:VBox >
                                     <nutrition:Panelcreatemeal id="pnlCreateLunch" meal="{nutritionData.lunch}"/>
                                        </mx:VBox>
                                       
                                        <mx:VBox >
                                     <nutrition:Panelcreatemeal id="pnlCreateDinner" meal="{nutritionData.dinner}"/>
                                        </mx:VBox>
               
                                </mx:ViewStack>
                                <mx:HBox>
                                        <mx:Button label="Save" click="vsMain.selectedIndex = 0;"/>
                                    <mx:Button label="Cancel" click="vsMain.selectedIndex = 0;"/>
                                </mx:HBox>
                               
                        </mx:VBox>
                               
                       
                </mx:HBox>
               
        </mx:ViewStack>
       
</mx:Application>





<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="390"
        borderThicknessLeft="0" borderThicknessRight="0" borderThicknessBottom="0"
        dropShadowEnabled="false"
         horizontalAlign="center" xmlns:containers="com.dougmccune.containers.*" title="Select An Item from below">
       
        <mx:Script>
                <![CDATA[
                        //import com.createmealPanel;
                       
                        [Bindable]
                        private var _meal:XMLList;
               
                        public function set meal(value:XMLList):void
                        {
                                if(value)
                                {
                                        _meal = value;
                                        createContainers();
                                }
                        }
                         
                        private function createContainers():void
                        {
                                for each(var item:Object in _meal.itemdata)
                                {
                                        if(item.available == "yes")
                                        {
                                                var mealitem:Panelcreatemealitem = new Panelcreatemealitem;
                                                coverflow.addChild(mealitem);
                                                mealitem.mealDetails = item;
                                        }
                                }
                        }
                ]]>
        </mx:Script>
       
        <containers:CoverFlowContainer id="coverflow" width="100%" height="100%"
                horizontalGap="1" borderStyle="inset" backgroundColor="0xFFFFFF"
                segments="9" reflectionEnabled="true"/>
               
                     <mx:HBox>
                        <mx:Button label="item 1" click="parentApplication.vsCreateMeals.selectedIndex=0;"/>
                                <mx:Button label="side item 1" click="parentApplication.vsCreateMeals.selectedIndex=1;"/>
               <mx:Button label="side item 2" click="parentApplication.vsCreateMeals.selectedIndex=2;"/>
            </mx:HBox>  
</mx:Panel>




<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" width="310" height="320"
         title="{mealDetails.title}" horizontalAlign="center">
       
       
        <mx:Metadata>
                [Event(name="addToMeal")]
                [Event(name="learnAboutThis")]
        </mx:Metadata>
       
        <mx:Script>
                <![CDATA[
                        import mx.controls.Alert;
                       
                        [Bindable]
                        public var mealDetails:Object;
                       
                       
                        private function calldispatch():void {
                                parentApplication.createmeals_loadswf_var = mealDetails.swf;
                                dispatchEvent(new Event('learnAboutThis', true));
                               
                        }
                       
                ]]>
        </mx:Script>
       
        <mx:Image source="{'/uploads/nutrition/' + mealDetails.imgsource }" width="285" height="159"/>

        <mx:Label text="{mealDetails.serving}"/>
       
        <mx:Button label="Add to Meal" click="dispatchEvent(new Event('addToMeal', true))"/>
       
        <mx:Button label="Learn About This" click="calldispatch()"/>
       
</mx:Panel>



--- In flexcoders@..., Sam Lai <samuel.lai@...> wrote:

>
> It seems like wherever this code is -
>
> [Bindable]
> private var customMeals:ArrayCollection = new ArrayCollection;
>
> //throws error on this line
> customMeals.addItem((event.target as mealitem).mealDetails);
>
> event.target is actually the panel containing the 'create meal item'
> button, as opposed to the mealitem itself. Can you post some more of
> the script and MXML for that part?
>
> The src folder is empty for me too in the ZIP file.
>
> 2009/7/2 Jason B <nospam@...>:
> > yes heres the results
> > "Main0.vsMain.HBox8.VBox968.vsCreateMeals.VBox971.pnlCreateBreakfast.coverflow.Panelcreatemealitem1006"
> >
> > How can I access the object data, it's in a file thats under the folder /com/nutrition/file.mxml
> >
> >
> >
> > --- In flexcoders@..., Sam Lai <samuel.lai@> wrote:
> >>
> >> I'd add a trace statement just before it to see what type of object
> >> event.target is - it could be that the target is the UI component, and
> >> not the data object.
> >>
> >> //throws error on this line
> >> trace(event.target);
> >> customMeals.addItem((event.target as mealitem).mealDetails);
> >>
> >> 2009/7/2 Jason B <nospam@>:
> >> > I've got an problem when the user clicks on button "Add to Meal" it throws an error because it can't seem to reference the data in mealDetails object inside the com/ directory?
> >> >
> >> > I'm trying to add the item to the list control.
> >> >
> >> > I have the code located here in case you want more details
> >> > http://files.getdropbox.com/u/228472/mealsflex.zip
> >> >
> >> >
> >> > [Bindable]
> >> > private var customMeals:ArrayCollection = new ArrayCollection;
> >> >
> >> > //throws error on this line
> >> > customMeals.addItem((event.target as mealitem).mealDetails);
> >> >
> >> >
> >> >
> >> >
> >> > <?xml version="1.0" encoding="utf-8"?>
> >> > <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" width="310" height="320"
> >> >         title="{mealDetails.title}" horizontalAlign="center">
> >> >
> >> >
> >> >        <mx:Metadata>
> >> >                [Event(name="addToMeal")]
> >> >                [Event(name="learnAboutThis")]
> >> >        </mx:Metadata>
> >> >
> >> >        <mx:Script>
> >> >                <![CDATA[
> >> >                        import mx.controls.Alert;
> >> >
> >> >                        [Bindable]
> >> >                        public var mealDetails:Object;
> >> >
> >> >
> >> >                        private function calldispatch():void {
> >> >                                parentApplication.createmeals_loadswf_var = mealDetails.swf;
> >> >                                dispatchEvent(new Event('learnAboutThis', true));
> >> >
> >> >                        }
> >> >
> >> >                ]]>
> >> >        </mx:Script>
> >> >
> >> >        <mx:Image source="{'/uploads/nutrition/' + mealDetails.imgsource }" width="285" height="159"/>
> >> >
> >> >        <mx:Label text="{mealDetails.serving}"/>
> >> >
> >> >        <mx:Button label="Add to Meal" click="dispatchEvent(new Event('addToMeal', true))"/>
> >> >
> >> >        <mx:Button label="Learn About This" click="calldispatch()"/>
> >> >
> >> > </mx:Panel>
> >> >
> >> >
> >> >
> >> >
> >> > ------------------------------------
> >> >
> >> > --
> >> > Flexcoders Mailing List
> >> > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> >> > Alternative FAQ location: https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
> >> > Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links
> >> >
> >> >
> >> >
> >> >
> >>
> >
> >
> >
> >
> > ------------------------------------
> >
> > --
> > Flexcoders Mailing List
> > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > Alternative FAQ location: https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
> > Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links
> >
> >
> >
> >
>


 « Return to Thread: getting the xml data from a dispatched event