`

flex元数据[Bindable]的意义和使用

阅读更多
[Bindable]就是所谓的元数据标签。元数据标签是一种特殊的标签,它在代码中的作用就是向编译器提供如何编译程序的信息。实际上,这些标签并没有被编译到生成的SWF文件中,而只是告诉编译器如何生成SWF文件。

[Bindable]

Bindable元数据标签是最经常用到的一个元数据标签,因为它使程序组件之间的数据同步变得很容易。Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。绑定数据的时候,你必须先使用元数据标签定义一下数据,

Bindable也可以用来绑定到事件。Listing 2展示了如何使用getter和setter函数将一个属性绑定到一个事件上。这个例子中有一个叫做phoneNumber的私有变量,还有一个公有的 setter和getter函数。使用Bindable标签将这个getter方法绑定到了一个叫做phoneNumberChanged的事件上,只要 数据发生改变setter方法就会分派phoneNumberChanged事件。通过使用setter方法,可以在数据赋予私有变量之前对其进行操作。 在这个例子中,数据只有在长度大于等于10的时候才会被格式化。当phoneNumberChanged事件被分派的时候,第二个TextInput组件 会被更新,因为他的text属性绑定到了phoneNumber变量上。


当一个属性来自一个数据表达式,当源属性改变时,Flex自动复制源属性的值到任何目标属性。为了标示着一复制,你必须使用[Bindable]元数据标签在flex中注册这一属性,并且源属性必须发送一个事件。

[Bindable]元数据标签采用以下格式

[Bindable]
[Bindable(event="eventname")]

如果你省略了事件名,flex自动创建一个事件名propertyChange

你可以在三个地方使用[Bindable]元数据标签
1、在public class定义前
[Bindable]元数据标签绑定所有的作为变量定义的public属性,并且所有的public属性都定义有getter和setter方法。在这种情况下,[Bindable]没有参数,例如:
[Bindable]
public class TextAreaFontControl extends TextArea {}
flex编译器自动创建一个事件名叫propertyChange用于所有的公有属性,这些属性可以作为绑定表达式的源。这种定义等同于
[Bindable(event="propertyChange")]

如果属性值的改变与原来相同,flex并不传递这个事件或更新属性。

2、在public, protected 或 private 属性前,格式为:
[Bindable]
public var foo;


3、Before a public, protected, or private property defined by a getter or setter method.
你必须同时定义getter和setter方法,以便于使用[Bindable]元数据标签。
[Bindable]
public function set shortNames(val:Boolean):void {
    ...               
}

public function get shortNames():Boolean {
    ...
}


你可以使用自定义的事件名,如:
[Bindable(event="changeShortNames")]
public function set shortNames(val:Boolean):void {
    ...
    // Create and dispatch event.
    dispatchEvent(new Event("changeShortNames"));
}

// Get method.
public function get shortNames():Boolean {
    ...
}    



// Define public vars for tracking font size.
    [Bindable]
    public var maxFontSize:Number = 15;
    [Bindable]
    public var minFontSize:Number = 5;


// Define private variable.
    private var _maxFontSize:Number = 15;

    [Bindable(event="maxFontSizeChanged")]
    // Define public getter method.
    public function get maxFontSize():Number {
        return _maxFontSize;
    }

    // Define public setter method.
    public function set maxFontSize(value:Number):void {
        if (value <= 30) {
            _maxFontSize = value;
        } else _maxFontSize = 30;

        // Create event object.
        var eventObj:Event = new Event("maxFontSizeChanged");
        dispatchEvent(eventObj);

    }


来源:
http://www.iteye.com/topic/152024
分享到:
评论

相关推荐

    Flex 2 中的元数据标签

    ### Flex 2 中的元数据标签 在Flex 2中,元数据标签是用于提供类、...合理使用这些元数据标签,可以显著提高Flex应用的开发效率和代码质量。对于Flex开发者来说,熟悉并掌握这些元数据标签的应用技巧是非常重要的。

    flex数据绑定的原理

    当我们使用`[Bindable]`元数据标签标记一个类的成员变量时,Flex编译器会自动为这个变量生成相关的访问器(getter和setter)。例如,在提供的代码段中,`list`变量被标记为`[Bindable]`: ```actionscript public ...

    flex as3 元数据标签综合

    `Bindable`是Flex中最常用的元数据标签之一,它用于通知Flex框架当属性发生变化时自动派发一个`propertyChange`事件。 - **无参数的Bindable** 当没有参数传递给`Bindable`时,表示当对应的属性值改变时会默认...

    Flex Bind数据绑定实例代码

    在上述代码中,`[Bindable]`元数据告诉编译器该变量可以被数据绑定使用。`{message}`表达式是数据绑定的语法,它将Label的text属性与message变量关联。 除了简单的属性绑定,Flex还支持双向数据绑定。这使得UI组件...

    Flex_2_中的元数据标签

    元数据标签在 Flex 2 开发中扮演着重要的角色,它们为编译器提供了必要的信息以更好地理解和编译应用程序。这些标签并不直接参与 SWF 文件的生成,而是作为指导编译过程的重要工具。 #### [Bindable] 标签 **定义...

    Flex Bindable 的用法

    然而,正确使用`[Bindable]`元数据需要注意其适用范围和限制,特别是在处理getter/setter时,需要确保编译器能够识别出绑定关系,以避免潜在的问题。在某些复杂情况下,可能需要通过事件驱动的方式手动触发绑定更新...

    flex 4 生命周期

    Flex 4的生命周期改进也体现在事件处理和元数据的使用上,例如` IOErrorEvent`和`StatusEvent`等事件,以及`[Bindable]`、`[SkinPart]`等元数据,这些都增强了组件与外部数据的交互和皮肤的自定义。 尽管Adobe提供...

    FLEX数据绑定专题

    例如,通过使用Bindable元标签或Bindable类修饰符,可以实现输入控件(如TextInput)与数据模型间的双向绑定: ```mxml &lt;mx:TextInput id="inputField" text="{data.name}" bindable="true" /&gt; ``` 在Flex中,数据...

    flex 绑定元数据

    Flex绑定元数据的使用能够极大丰富Flex应用程序的功能和界面表现。通过[Embed]和[Bindable]标记以及[mx:Metadata]元标签,开发者能够将外部资源嵌入应用程序,并通过类变量在Flex代码中进行访问和操作。这样做的好处...

    FLEX数据绑定四种方式

    [Bindable]是一个元数据标签,用于标记那些可以进行数据绑定的变量或方法。当数据源发生变化时,Flex会自动触发相应的事件,使得UI能够实时更新。 **使用方法** 例如,标记一个变量为可绑定: ```xml &lt;![CDATA[ ...

    Flex4 AIP 中文说明

    此外,还增加了 Bindable、Observer 和 Bindable Event 等元数据,让数据绑定更加灵活和强大。 5. **MXML改进**:MXML作为Flex的声明式语言,在Flex4中变得更加强大。它可以用来定义组件、事件处理函数甚至...

    Flex DataGrid从XML文件中加载数据

    在Flex编程中,`Flex DataGrid` 是一个用于展示数据集的组件,它允许用户以表格形式查看和操作数据。本示例展示了如何从XML文件加载数据并将其显示在Flex DataGrid中。以下是对该话题的详细解释: 1. **XML数据源**...

    Flex分页技术

    在Flex开发中,数据展示通常会涉及到大量的数据处理,如分页、排序、过滤和关键字搜索等。在Flex中,我们可以使用DataGrid组件来实现这些功能,提高用户体验并优化性能。 1. **Flex DataGrid 分页技术**: Flex ...

    FLEX 数据绑定专题一(转)

    2. ActionScript数据绑定:在ActionScript代码中,可以使用Bindable元标签声明类的属性为可绑定的,然后使用`bindable`关键字定义绑定表达式。 数据绑定的应用场景: 数据绑定在FLEX中广泛应用于各种场景,包括但不...

    Flex Data Binding详解

    在Flex中,要使属性具备数据绑定的能力,通常需要在属性声明前添加`[Bindable]`元数据标签。例如: ```actionscript [Bindable] private var ss:String = "aaa"; ``` 如果没有指定触发绑定的特定事件(如`...

    Flex_Builder教程

    在数据绑定中,[Bindable]元数据标签用于标记一个属性为可绑定的,这样就可以在MXML和ActionScript之间建立实时的数据同步。例如,可以将ArrayCollection定义为一个可绑定的属性,然后在MXML中引用这个属性作为数据...

    flex数据绑定

    此外,还可以使用`bindable`元数据标签来声明可绑定的类成员。 2. ActionScript数据绑定: 在ActionScript中,我们可以使用`Binding`类或`mx.binding.utils.BindingUtils`静态方法来实现数据绑定。例如,`...

    FLex文档教程

    使用`[Bindable]`元数据标签声明可绑定的属性,这样当数据源发生变化时,UI会自动更新,无需手动刷新。 **五、Flex组件模型与协作** Flex的组件模型允许开发者和设计师进行分离式协作。组件设计可以独立于业务逻辑...

    FLEX动态树 动态图表

    此段代码展示了如何使用`[Bindable]`和`[Embed]`元数据来嵌入自定义图标,并在`Tree`控件中使用这些图标。`defaultLeafIcon`、`folderOpenIcon`和`folderClosedIcon`属性分别设置叶子节点、打开和关闭状态下的图标。...

Global site tag (gtag.js) - Google Analytics