7
votes

I've implemented a MXML custom components and I would like to pass parameters to the constructor:

 newUser = new userComp("name");

instead of using set methods.

Is this possible if the custom components has been built in MXML (with initialize=myPseudoCostructor() method ?)

Or I can only set the parameter with an additional line of code?

3

3 Answers

5
votes

You can't pass variables into an MXML component's constructor. I don't even believe it's possible to define a constructor in an MXML component, though I could be wrong. You can, however, setup properties which have default values, and are changed post-construction.

You could also create an initialization function which is also invoked post-construction.

3
votes

I've recently run into this problem - what you can do is create an initialisation function which returns the component:

Inside the component (called, for argument's sake, MyComponent):

public function init(...args):MyComponent {

    //Add constructor code here

    return this;    
}

...when creating a component, you can invoke like this:

var myComp:MyComponent = new MyComponent().init(args);

As it returns the object, you can treat it as a constructor. I've had to use this method a lot lately, seems the best method for getting round the problem.

1
votes
IN COMPONENT (cosa)

<fx:Declarations>
 <fx:String id="name">Jon Doe</String>
</fx:Declarations>
<fx:Script>
 trace("hola "+name)
</fx:Script>
<s:Label text="Hola {name}"/>

IMPLEMENT
<cosa name="Juan Perez"/>