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

Re: getting the xml data from a dispatched event

by turbo_vb :: Rate this Message:

Reply to Author | View in Thread


import com.nutrition.Panelcreatemealitem;

-TH

--- In flexcoders@..., "Jason B" <nospam@...> wrote:
>
>
> It wont accept your suggestions
>
> Severity and Description Path Resource Location Creation Time Id
> 1120: Access of undefined property Panelcreatemealitem. /src Main.mxml
line 105 1246801954900 468962

>
>
>
>
>
>
>
>
> --- In flexcoders@..., "Tim Hoff" TimHoff@ wrote:
> >
> >
> > Wow, I've got to say; "What a mess." However, you can get it to work
> > with the following changes:
> >
> > [Bindable]
> > private var customMeals:XMLListCollection = new XMLListCollection();
> >
> >
> >
> > // addToMeal event Handler
> > private function addToMealHandler(event:Event):void
> > {
> > customMeals.addItem((event.target as
> > Panelcreatemealitem).mealDetails);
> > Alert.show(customMeals.toString());
> > }
> >
> > You have some naming conflicts and, since you're dealing with xml,
> > you'll need to use an XMLListCollection; instead of an
ArrayCollection.
> >
> > -TH
> >
> > --- In flexcoders@..., "Jason B" <nospam@> wrote:
> > >
> > > 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.cov\
\
> > erflow.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