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 <andreagiorge...@gmail.com>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 <kiranv...@gmail.com > > 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 >> >> >> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Flex India Community" group. To post to this group, send email to flex_india@googlegroups.com To unsubscribe from this group, send email to flex_india+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/flex_india?hl=en -~----------~----~----~----~------~----~------~--~---