Thanks again.



________________________________
From: Maciek Sakrejda <msakre...@truviso.com>
To: flexcoders@yahoogroups.com
Sent: Wednesday, April 8, 2009 3:12:10 PM
Subject: Re: [flexcoders] Re: How can I have my class return an ArrayCollection?


I haven't worked with it, actually, but the Language Reference docs are
here:
http://livedocs. adobe.com/ flex/3/langref/ mx/binding/ utils/BindingUti ls.html

-----Original Message-----
From: - - <sailorsea21@ yahoo.com>
Reply-to: flexcod...@yahoogro ups.com
To: flexcod...@yahoogro ups.com
Subject: Re: [flexcoders] Re: How can I have my class return an
ArrayCollection?
Date: Wed, 8 Apr 2009 12:02:11 -0700 (PDT)

Hi Maciek, would you have an example for BindingUtils since I will be
consuming ClientServices in ActionScript?
Thanks.

____________ _________ _________ _________ _________ _________ _
From: Maciek Sakrejda <msakre...@truviso. com>
To: flexcod...@yahoogro ups.com
Sent: Wednesday, April 8, 2009 1:46:46 PM
Subject: Re: [flexcoders] Re: How can I have my class return an
ArrayCollection?

At first glance, that looks right. Now you just need to add listeners
(for ResultEvent. RESULT since you're just re-dispatching it--although
it
might be a good idea to create your own event type here) to the
ClientServices object.

Alternately, depending on how you're using this, since your class is
bindable anway, you could simply have the HTTPService result handler
update your servicesArray, and dispatch an event stating it's ready.
E.g., something like

[Bindable(event= "foo")]
public function get serviceList( ):ArrayCollectio n {
return servicesArray;
}

and in your ResultEvent. RESULT listener, simply do

// as before
for each (... {
...
}
// Ideally, dispatch a custom event type, but this will work
dipatchEvent( new Event('foo') );

Then, clients binding to the serviceList( ) getter will automagically
see
updates as soon as the info arrives--e.g. , something like:

<mx:Script>
<![CDATA[
var cs:ClientServices = new ClientServices( );
]]>
</mx:Script>

<mx:List id="serviceList" dataProvider= "{cs.servicesLis t}"/>

This is more useful if you're consuming ClientServices in MXML rather
than ActionScript, since in ActionScript you have to go through
BindingUtils, which is somewhat more awkward, but it still might be
better than manually configuring listeners to ClientServices. ..

-Maciek

-----Original Message-----
From: - - <sailorsea21@ yahoo.com>
Reply-to: flexcod...@yahoogro ups.com
To: flexcod...@yahoogro ups.com
Subject: Re: [flexcoders] Re: How can I have my class return an
ArrayCollection?
Date: Wed, 8 Apr 2009 09:39:05 -0700 (PDT)

My problem wasn't receiving null...

I send an HTTPService. The ResultEvent creates an ArrayCollection. I
wanted my class to return that ArrayCollection but what is happening is
right after my HTTPService is sent, my class returns my ArrayCollection
before the ResultEvent has time to fill it... therefore it is null.... 

I'm now trying to implement an EventDispatcher but am getting a little
confused... 
Does this look right??? :

[Bindable] 

public class ClientServices extends EventDispatcher

{ 

private var serviceArray: ArrayCollection;

private var serviceXML:XML; 

public function ClientServices (target:IEventDispa tcher=null)

{

super(target) ;

var service:HTTPService = new HTTPService( );

service.url = 'test.php';

service.useProxy = false;

service.method = 'POST';

service.resultForma t = 'e4x';

service.showBusyCur sor = true;

service.addEventLis tener(ResultEven t.RESULT, 

function (event:ResultEvent) :void

{

serviceArray = new ArrayCollection( );

serviceXML = event.result as XML;

var ourxml:XML;

for each(ourxml in serviceXML.elements ()) serviceArray.
addItem(ourxml) ;

dispatchEvent( event)

}

); 

service.send( ); 

}

}

Thanks.

____________ _________ _________ _________ _________ _________ _
From: actionscript_ czar <da...@ducharme. cc>
To: flexcod...@yahoogro ups.com
Sent: Wednesday, April 8, 2009 12:18:04 PM
Subject: [flexcoders] Re: How can I have my class return an
ArrayCollection?

If you are having problems with it giving you a null object before the
ResultEvent function is called then make a function that returns an
empty ArrayCollection if it is currently null.

Perhaps

function getServiceArray( ):ArrayCollection
{
if( this.serviceArray == null )
{
this.serviceArray = new ArrayCollection( );
}
return this.serviceArray( );
}

If that isn't what you are having problems with, perhaps more
specificity could help us help you.

--- In flexcod...@yahoogro ups.com, - - <sailorsea21@ ...> wrote:
>
> I tried that but it returns an empty ArrayCollection because it's only
created within the ResultEvent Function once the HTTPService is
successful.. .
> 
> Thanks.
> 
> 
> 
> 
> ____________ _________ _________ __
> From: valdhor <valdhorlists@ ...>
> To: flexcod...@yahoogro ups.com
> Sent: Wednesday, April 8, 2009 11:20:44 AM
> Subject: [flexcoders] Re: How can I have my class return an
ArrayCollection?
> 
> 
> Umm.. Add a public function that returns serviceArray ?
> 
> --- In flexcod...@yahoogro ups.com, "sailorsea21" <sailorsea21@ ...>
wrote:
> >
> > Hi everyone, 
> > how can I have this following class return me an ArrayCollection
whenever I call it????
> > 
> > [Bindable] 
> > public class Services
> > {
> > public var serviceArray: ArrayCollection;
> > public var serviceXML:XML;
> > 
> > public function getServices( ):void
> > {
> > var service:HTTPService = new HTTPService( );
> > service.url = "test.php";
> > service.useProxy = false;
> > service.method = "POST";
> > service.resultForma t = "e4x";
> > service.showBusyCur sor = true;
> > service.addEventLis tener(ResultEven t.RESULT, 
> > function (event:ResultEvent) :void
> > {
> > serviceArray = new ArrayCollection( );
> > serviceXML = event.result as XML;
> > var ourxml:XML;
> > for each(ourxml in serviceXML.elements ()) serviceArray.
addItem(ourxml) ; 
> > }
> > ); 
> > service.send( ); 
> > }
> > }
> >
>





      

Reply via email to