That's because assignation doesn't automatically bind xmlObj to SingletonXML data object, so changes at data doesn't reflect on xmlObj. You must declare an explicit bound between xmlObj and SingletonXML.getInstance().data, like this:
<?xml version="1.0" encoding="utf-8"?> <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.collections.XMLListCollection; import Components.SingletonXML; import mx.controls.Alert; [Bindable] private var xmlObj:XMLList; private function init():void{ xmlObj=SingletonXML.getInstance().data; this.dataProvider=xmlObj; this.labelField="@name" } ]]> </mx:Script> * <mx:Binding source="SingletonXML.getInstance().data" destination="this.xmlObj" /> *</mx:ComboBox> Best regards. Andrea On Thu, Nov 5, 2009 at 1:40 PM, Kiran Kumar Vasireddy <[email protected]>wrote: > Thanks a lot Andrea. That is working fine . But again have a question. > Following is the exact replica of the combox what ever you added to the > application . If I add this to the application it is not working . Could you > please shed some light on this? > > > <?xml version="1.0" encoding="utf-8"?> > <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" > creationComplete="init()"> > <mx:Script> > <![CDATA[ > import mx.collections.XMLListCollection; > import Components.SingletonXML; > import mx.controls.Alert; > > [Bindable] > private var xmlObj:XMLList; > > private function init():void{ > xmlObj=SingletonXML.getInstance().data; > this.dataProvider=xmlObj; > this.labelField="@name" > } > > ]]> > </mx:Script> > > </mx:ComboBox> > > > On Thu, Nov 5, 2009 at 10:27 AM, Andrea Giorgetta < > [email protected]> wrote: > >> I agree with Vaibhav, you should use Cairngorm because it's a great >> framework that simplifies many repetitive tasks and "forces" the developer >> to create a better class model. >> For this particular problem, it is not necesary, this >> "Kindof-ModelLocator-Singleton-Pattern" can be implemented anyway. >> Solved it by changing: >> >> 1. [Bindable] to full SingletonXML class. Sorry I miss that one in the >> first example. >> 2. private var _data: ... to public var data, and remove the getter. >> Not sure why's that... :S >> >> Attached my test code. >> >> Hope this works. >> Andrea >> >> >> >> >> >> On Thu, Nov 5, 2009 at 11:51 AM, Kiran Kumar Vasireddy < >> [email protected]> wrote: >> >>> Hi Dinukx, >>> >>> Thanks for your response and Could you please help me on IResponder >>> interface ? I googled but no use >>> >>> >>> Hi Andrea, >>> >>> Following is the format of XML data data we received .I just took the >>> format from the XML and changed the names . Data we received is about 3 MB >>> file and it is live data. Country,State,City and Student tags are repeated >>> >>> >>> <Edu > >>> <Country name="United States" code="US"> >>> <State name="Michigan" code="MI"> >>> <City name="Auburn Hills"> >>> <Student name="Kiran " /> >>> <Student name = "Abhijith" /> >>> </City> >>> </State> >>> <State name="Ohio" code="OH"> >>> <City name="Coshocton"> >>> <Student name="Andrea" /> >>> <Student name = "John" /> >>> </City> >>> </State> >>> </Country> >>> </Edu> >>> >>> Regards >>> Kiran >>> >>> >>> >>> On Wed, Nov 4, 2009 at 11:53 PM, flexorz group of flex corders < >>> [email protected]> wrote: >>> >>>> i think Vaibhav solution should work ,but you have to update the model >>>> from the command it self. (try to look in to more Cairngorm solutions). >>>> only >>>> putting [binding] tag wont do the trick :) >>>> >>>> the second option should be using and responder.(you may need to >>>> implement IResponder interface) >>>> >>>> where you can create the asynchronous call and wait until the result is >>>> passed back to the result function or falut. >>>> >>>> actually thats how even cairngrom works. >>>> >>>> let me know if you need any help on that. >>>> >>>> thanks >>>> dinukx >>>> >>>> >>>> >>>> let me know if you need help with responder >>>> >>>> Dinukx; >>>> >>>> POC : >>>> >>>> >>>> >>>> >>>> >>>> On Thu, Nov 5, 2009 at 1:08 AM, Kiran Kumar Vasireddy < >>>> [email protected]> wrote: >>>> >>>>> Hi Vaibhav, >>>>> >>>>> Sorry no use ,still not working . >>>>> >>>>> Regards >>>>> Kiran >>>>> >>>>> >>>>> On Wed, Nov 4, 2009 at 12:38 PM, Vaibhav Seth < >>>>> [email protected]> wrote: >>>>> >>>>>> To avoid such kind of issues, better use Cairngorm. >>>>>> I doubt the problem is Binding. You have to bind data with the >>>>>> dataprovider of your component. So that, whenever your data will get >>>>>> populated it will be reflected in the component. Try using: >>>>>> [Bindable]private var _data:XMLList; >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Nov 4, 2009 at 11:59 AM, Kiran Kumar Vasireddy < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Thanks Vaibhav and Andrea for your suggestions. >>>>>>> >>>>>>> Andrea : You suggestion looks working , But got in one more problem . >>>>>>> Could you please help me ? >>>>>>> >>>>>>> If I call SingletonXML.getInstance().data; It is returning Null >>>>>>> because the of getResult() is returning the data later . Since the >>>>>>> calls are >>>>>>> asynchronous get Data() is getting called first and then getResult(). >>>>>>> >>>>>>> I checked the event data and data is there in the event . >>>>>>> >>>>>>> I came into this problem because of "<XML source = "is crashing my >>>>>>> IE7, Otherwise I could have done it using XML tag instead HTTPService ( >>>>>>> for >>>>>>> local data I am using HTTPService ) . Please see the code below. >>>>>>> >>>>>>> >>>>>>> >>>>>>> package Components >>>>>>> { >>>>>>> import mx.controls.Alert; >>>>>>> import mx.rpc.events.ResultEvent; >>>>>>> import mx.rpc.http.HTTPService; >>>>>>> >>>>>>> >>>>>>> public class SingletonXML >>>>>>> { >>>>>>> private static var _instance: SingletonXML; >>>>>>> private var _data:XMLList; >>>>>>> >>>>>>> public function SingletonXML() { >>>>>>> >>>>>>> if (_instance != null) >>>>>>> trace("Constructor shouldn't be called >>>>>>> directly... now I'll have to kill you") >>>>>>> _instance = this; >>>>>>> this.initData(); >>>>>>> } >>>>>>> >>>>>>> private function initData():void { >>>>>>> var service:HTTPService =new HTTPService(); >>>>>>> service.url="Components/StudentData.xml"; >>>>>>> service.resultFormat="e4x"; >>>>>>> service.addEventListener("result", getResult); >>>>>>> service.send(); >>>>>>> >>>>>>> } >>>>>>> private function onDataLoaded():void { >>>>>>> >>>>>>> //Store data >>>>>>> //this._data = [loaded data]; >>>>>>> >>>>>>> } >>>>>>> >>>>>>> private function getResult(event:ResultEvent):void{ >>>>>>> Alert.show("this is in get result"); >>>>>>> >>>>>>> _data=XMLList(event.result.Country); >>>>>>> >>>>>>> } >>>>>>> >>>>>>> public static function getInstance():SingletonXML{ >>>>>>> if (! _instance) >>>>>>> _instance = new SingletonXML(); >>>>>>> >>>>>>> return _instance; >>>>>>> } >>>>>>> >>>>>>> public function get data():XMLList { >>>>>>> Alert.show("this is in get data"); >>>>>>> return this._data; >>>>>>> >>>>>>> >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> On Tue, Nov 3, 2009 at 4:38 PM, Andrea Giorgetta < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi Kiran. >>>>>>>> I think you should create a "ModelLocator" singleton class, that >>>>>>>> gets and store the xml information. It would be something like this: >>>>>>>> >>>>>>>> public class MyModelLocator >>>>>>>> { >>>>>>>> private static var _instance: MyModelLocator; >>>>>>>> private var _data:XMLList; >>>>>>>> >>>>>>>> public function MyModelLocator() { >>>>>>>> if (_instance != null) >>>>>>>> trace("Constructor shouldn't be called directly... >>>>>>>> now I'll have to kill you") >>>>>>>> _instance = this; >>>>>>>> this.initData(); >>>>>>>> } >>>>>>>> >>>>>>>> private function initData():void { >>>>>>>> //Load data.... >>>>>>>> } >>>>>>>> private function onDataLoaded() { >>>>>>>> //Store data >>>>>>>> this._data = [loaded data]; >>>>>>>> } >>>>>>>> >>>>>>>> public static function getInstance():MyModelLocator{ >>>>>>>> if (! _instance) >>>>>>>> _instance = new MyModelLocator(); >>>>>>>> return _instance; >>>>>>>> } >>>>>>>> >>>>>>>> public function get data():XMLList { >>>>>>>> return this._data; >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> In order to get data in each combobox, you would set >>>>>>>> dataprovider="{MyModelLocator.getInstance.data}" (if that XMLList >>>>>>>> already >>>>>>>> has the correct structure to be directly used as a dataprovider in the >>>>>>>> combobox... otherwise now is the time to change it ;) ) >>>>>>>> This way: >>>>>>>> - There's only one instance of MyModelLocator at anytime, anywhere. >>>>>>>> - initData is called only once, so the data is retrieved only once. >>>>>>>> - By storing the data within the singleton class, it's available to >>>>>>>> the whole application by just importing the class. >>>>>>>> >>>>>>>> >>>>>>>> Hope it solves your issue. >>>>>>>> Best regards >>>>>>>> Andrea. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Nov 3, 2009 at 5:59 PM, Kiran Kumar Vasireddy < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi , >>>>>>>>> >>>>>>>>> I am calling httpservice.send() method and getting the data and >>>>>>>>> populating it in XMLList . I want this step to be done only once and >>>>>>>>> want to >>>>>>>>> reuse the data what ever I got . >>>>>>>>> My scenario is like this >>>>>>>>> >>>>>>>>> 1)Creating Custom combobox component >>>>>>>>> 2) Calling send() in the custom component and populating the >>>>>>>>> combobox >>>>>>>>> >>>>>>>>> I want to create around 5 instances of the above component . But >>>>>>>>> what is happening is the send() is getting called again and again . >>>>>>>>> Is there >>>>>>>>> any way to restrict this and get the data only once and use it for my >>>>>>>>> 5 >>>>>>>>> instances . The problem here is If I use http send() method when I >>>>>>>>> load the >>>>>>>>> application , This works perfect . But we want that to be called only >>>>>>>>> from >>>>>>>>> component and want to use the same component again and again. >>>>>>>>> >>>>>>>>> Thanks for your help >>>>>>>>> Kiran >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Thanks, >>>>>> Vaibhav Seth. >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Flex India Community" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/flex_india?hl=en -~----------~----~----~----~------~----~------~--~---

