Say for example I have the following CFC called test.cfc:
<cfcomponent>
<cfset init()>
<cffunction name="init" access="public" output="no" returntype="test">
<cfargument name="cartID" type="numeric" required="yes" >
<cfset variables.cartID = arguments.cartID>
<cfreturn this>
</cffunction>
</cfcomponent>
...and I have the following CFM file that calls it.....test.cfm.....
<cfobject component="test" name="comp">
<cfset comp.init(6)>
<cfdump var="#comp.init(6)#">
This will cause an error saying the parameter cartID to function init() was
required but not passed in, because the constructor call ( <cfset init()> )
does not pass a parameter to the init function. The only way I can get this to
work is to comment out the <cfset init()> line. I guess I don't need this in
my scenario because I'm calling the init method directly anyway.
FYI: I've been following Ben Fortas phone selector example ( a good example of
building a simple Flex/CF app):
http://www.adobe.com/devnet/flex/articles/coldfusionflex_part3_02.html
Ian Skinner - 29 Aug 2007 15:46 GMT
Yes you would not use the <cfset init()> line in the pseudo constructor.
Then, as you where doing in your cfml example, you will call init()
directly in your code.
Then to translate this to your mxml, you would put a <mx:method
name="init" ...> tag in your <mx:remoteObject... tag block. Then as
some relevant part of your code you would call the init() method in your
mxml. Very likely on some creationComplete() event.
One thing to remember, without using more sophisticated techniques, a
CFC can not maintain state when using remote calls. This is true for
flex|flash remoting or web services. In other words you can't make one
call to a method to set a value, then make another call to return the
value when using remote methods.