Passing constructor parameters for MXML-based custom Flex components
Asked Answered
E

3

7

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?

Equidistance answered 18/4, 2010 at 17:47 Comment(0)
N
5

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.

Neslund answered 18/4, 2010 at 20:12 Comment(3)
ok, so if I create a custom component with mxml I can only set the variables later invoking its methods.Equidistance
You can define a constructor in/of an MXML component, and you can even have parameters in that constructor; but the restriction is that all parameters to the constructor must be optional.Wampumpeag
I'm getting Multiple constructor definitions found. Constructor may not be defined in <Script /> code. It says here (in a note) that this is explicitly disallowed.Wiry
O
3

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.

Omit answered 20/2, 2013 at 0:32 Comment(0)
L
1
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"/>
Loose answered 8/12, 2011 at 17:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.