Kevin
Kevin

Reputation: 23634

Global Object in ActionScript

private var _product:Product;

        [Bindable]
        public function get product():Product
        {
            return _product;
        }

        public function set product(p:Product):void
        {
            _product = p;
            tn.selectedIndex = 0;
        }

<mx:Label text="{product.name}" fontSize="11" fontWeight="bold"/>

How are they getting the product.name value which is inside product class.

package samples.flexstore
{

[Bindable]
public class Product
{

    public var productId:int;
    public var name:String;
    public var description:String;
    public var price:Number;
    public var image:String;
    public var series:String;
    public var triband:Boolean;
    public var camera:Boolean;
    public var video:Boolean;
    public var highlight1:String;
    public var highlight2:String;
    public var qty:int;

    public function Product()
    {

    }

    public function fill(obj:Object):void
    {
        for (var i:String in obj)
        {
            this[i] = obj[i];
        }
    }

    [Bindable(event="propertyChange")]
    public function get featureString():String
    {
        var str:String = "";
        if (triband)
            str += "Tri-band ";

        if (camera)
            str += "Camera ";

        if (video)
            str += "Video";

        return str;
    }

}

}

Upvotes: 0

Views: 378

Answers (3)

Joel Hooks
Joel Hooks

Reputation: 6565

_product is a private instance of the Product class. They are supplying the set product method with a Product value, which sets the _product private variable to an instance of the Product class.

The bracket notation in the text="{product.name}" portion of the above code is shorthand notation for binding the contained variable, in this case the name property of the product instance, to the component property (text). When the set product method is supplied a Product instance, Flex fires events internally that update the components that have that property bound.

Defining Data Models - Flex Quickstarts

Upvotes: 0

cliff.meyers
cliff.meyers

Reputation: 17734

"name" is a public var on the Product class. By definition, "name" will be accessible to any other class. That's what "public" means.

Upvotes: 0

Satish
Satish

Reputation: 6485

"{product.name}" , the product refers to the getter method!

That's the trick of Flex/ActionScript 3's getter and setter methods http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=ascomponents_147_08.html

Upvotes: 1

Related Questions