flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Ginneberge" <p.ginnebe...@gmail.com>
Subject Re: Send parameter to mxml constructor
Date Fri, 27 Sep 2013 07:26:04 GMT
An often overlooked "feature" of MXML components (extending UIComponent) is that they have
a data property that can be used for 
pretty much anything.

// where MyClass is MXML
var instance:MyClass = new MyClass();
instance.data = {prop:"value"};

In MyClass you can either override the "data" getter/setter or listen for the dataChange event
and do what you need to do.

The data property is also bindable, so you can have mxml children inside MyClass bind to it.

    <mx:Label text="{data.prop}" />

One of the downsides of the data property is data typing (it's types as Object) so you may
have to do some type casting if needed.

regards,
Peter

----- Original Message ----- 
From: "mark goldin" <markzolotoy@gmail.com>
To: "users" <users@flex.apache.org>
Sent: Friday, September 27, 2013 3:01 AM
Subject: Re: Send parameter to mxml constructor


> That is not exactly what I have. Yes, I too have an mxml class based on
> another AS class. But I am creating an instance of my mxml class like this:
> var newMyClass:MyClass = new MyClass();
> So, how can I pass a value for myProperty to newMyClass? My understanding
> as soon as var newMyClass:MyClass = new MyClass(); executes all children on
> newMyClass will be created but I need to have myProperty before that.
>
>
> On Thu, Sep 26, 2013 at 7:17 PM, Mark Kessler
> <kesslerconsulting@gmail.com>wrote:
>
>> Let me make the example a little more neutral.
>>
>>
>> class being called.
>>
>>     public class MyClass inherits UIComponent
>>     {
>>         /**
>>         *  Constructor.
>>         */
>>         public function MyClass ():void
>>         {
>>             super();
>>         }
>>
>>         //----------------------------------------
>>         //  My setup property
>>         //----------------------------------------
>>         protected _myProperty:Object;
>>
>>         public function get myProperty():Object
>>         {
>>             return
>>         }
>>
>>         public function set myProperty(value:Object):void
>>         {
>>             if (_myProperty == value)
>>             {
>>                 return;
>>             }
>>
>>             _myProperty = value;
>>
>>             setupChildren();
>>         }
>>
>>         protected function setupChildren():void
>>         {
>>             //using the _myProperty to setup the children and marking
>> anything as being ready and available... events n such.
>>         }
>>     }
>>
>>
>> mxml side
>>
>> <ns:MyClass myProperty="The property i'm passing to initialize" />
>>
>>
>>
>>
>> -Mark
>>
>>
>>
>> On Thu, Sep 26, 2013 at 3:18 PM, mark goldin <markzolotoy@gmail.com>
>> wrote:
>>
>> > Are you saying I have to involve the DI framework?
>> >
>> >
>> > On Thu, Sep 26, 2013 at 2:13 PM, Kessler CTR Mark J <
>> > mark.kessler.ctr@usmc.mil> wrote:
>> >
>> > > Setter Dependency Injection(mxml compatible) vs constructor Dependency
>> > > Injection (AS compatible).
>> > >
>> > > -Mark
>> > >
>> > > -----Original Message-----
>> > > From: mark goldin [mailto:markzolotoy@gmail.com]
>> > > Sent: Thursday, September 26, 2013 2:57 PM
>> > > To: users
>> > > Subject: Send parameter to mxml constructor
>> > >
>> > > I have an mxml class called Obj1. Somewhere in my code I do:
>> > > var _obj1 = new Obj1();
>> > >
>> > > What I need is to provide some variable to Obj1 for its
>> initialization. A
>> > > reason for that is because Obj1 has children that need that variable
>> for
>> > > their initialization.
>> > > But because I cannot send a parameter to Obj1's constructor I dont know
>> > how
>> > > to solve my problem.
>> > > Any idea?
>> > >
>> > > Thanks
>> > >
>> >
>>
> 


Mime
View raw message