虽然多数Flex 开发者都使用过[Bindable]标签,但是很多人都不知道这个标签的作用甚至不知道该标签为何物。[Bindable]就是所谓的元数据标签。元数据 标签是一种特殊的标签,它在代码中的作用就是向编译器提供如何编译程序的信息。
实际上,这些标签并没有被编译到生成的SWF文件中,而只是告诉编译器如何 生成SWF文件。文档中列出的元数据标签共有12个,本文将讲解这些元数据标签的定义并给出使用它们的示例,在看完这篇文章之后,你就会明白应该在何时何 处在你的Flex 2应用程序中使用元数据标签了。
[ArrayElementType]
实际上,定义一个数组通常来说是一件很平常的事情,因为数组中的元素可以是任何类型的。不过,使用ArrayElementType元数据标签可以让你定义数组元素的数据类型。下面的例子展示了如何使用[ArrayElementType]:
程序代码
[ArrayElementType("String")]
public var arrayOfStrings:Array;
[ArrayElementType("Number")]
public var arrayOfNumbers:Array;
[ArrayElementType("mx.core.UIComponent")]
public var arrayOfUIComponents:Array;
[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);
}
分享到:
相关推荐
`Bindable`是Flex中最常用的元数据标签之一,它用于通知Flex框架当属性发生变化时自动派发一个`propertyChange`事件。 - **无参数的Bindable** 当没有参数传递给`Bindable`时,表示当对应的属性值改变时会默认...
### Flex 2 中的元数据标签 在Flex 2中,元数据标签是用于提供类、方法或属性的额外信息的一种特殊标记。这些标签通常位于类定义或成员声明之前,并被ActionScript编译器用来控制类的行为或者为开发工具提供有关...
通过对 Flex 2 中元数据标签 `[Bindable]` 和 `[ArrayElementType]` 的详细介绍,我们可以看到这些标签在实际开发中的重要作用。它们不仅可以提高代码的可维护性和可读性,还能帮助开发者更高效地管理和同步数据。...
在探讨“Flex [Bindable]标签数据绑定经典案例”这一主题时,我们首先需要理解Flex框架以及数据绑定在其中的应用。Flex是一种用于构建跨平台富互联网应用程序(RIA)的软件框架,由Adobe Systems开发。它使用MXML...
[Bindable] private var count:int = 0; protected function button_clickHandler(event:MouseEvent):void { count++; label.text = count.toString(); } ]]> (event)" /> ``` - **函数声明**:在...
- **动态的数据展现源于灵活的数据绑定**:介绍了数据绑定的基本概念,包括绑定表达式、[Bindable]符号、`<mx:Binding>`标签、BindingUtils和自定义数据绑定。 - **使用样式(style)和皮肤(Skin)两大画笔为应用程序...
当我们使用`[Bindable]`元数据标签标记一个类的成员变量时,Flex编译器会自动为这个变量生成相关的访问器(getter和setter)。例如,在提供的代码段中,`list`变量被标记为`[Bindable]`: ```actionscript public ...
`[Bindable]`元标签用于标记变量,使其在改变时能触发视图的自动更新。例如,`_xmllistCollection`被标记为可绑定,当数据源发生变化时,DataGrid会自动更新显示。 综上所述,Flex开发Flex dataGrid分页技术涵盖了...
对于“传对象”这一标签,Flex与.NET交互的一大优势在于能够传递复杂的对象类型,而不仅仅是基本类型。在FluorineFx的支持下,ActionScript类可以映射到.NET类,使得Flex可以直接操作.NET的对象实例。例如,你可以...
数据绑定是声明式编程的一大优势,它让UI状态与数据模型保持同步,如上例的`[Bindable]`属性,使得当标签值改变时,按钮的显示也会自动更新。 此外,Flex4的动画系统也采用了声明式方式,开发者可以简单地声明一个...
#### 描述与标签解析:“Flex 图片上传 实例 源码” 这段描述进一步明确了本文将围绕Flex图片上传的具体实例展开,并会提供源码。这表明读者可以通过阅读文章和查看提供的源码来学习和理解Flex中实现图片上传的方法...
在Flex中,要使属性具备数据绑定的能力,通常需要在属性声明前添加`[Bindable]`元数据标签。例如: ```actionscript [Bindable] private var ss:String = "aaa"; ``` 如果没有指定触发绑定的特定事件(如`...
若希望某个对象作为数据绑定的源,需在其属性前加上`[Bindable]`或`[Bindable("eventname")]`标记,确保属性变化时能触发数据绑定事件。 综上所述,Flex4.5提供了丰富的工具和机制,帮助开发者构建高性能、高互动性...
使用`[Bindable]`元数据标签声明可绑定的属性,这样当数据源发生变化时,UI会自动更新,无需手动刷新。 **五、Flex组件模型与协作** Flex的组件模型允许开发者和设计师进行分离式协作。组件设计可以独立于业务逻辑...
### Flex学习心得与关键知识点详解 #### 一、Flex组件模型 Flex采用了基于组件的开发模型,这使得开发者可以通过继承现有组件并扩展其功能来...为了使对象能够作为数据绑定的源,需要在其属性前添加`[Bindable]`注解。
在这个播放器中,核心组件包括MX Canvas容器、Script标签、以及对Flex类库的导入,如UIComponent、Alert、StringUtil等。 1. **MX Canvas**: 作为基础布局组件,Canvas提供了一个可自定义大小的区域,用于放置其他...
在Flex中,数据绑定通常通过在对象的属性标签中使用花括号`{}`来实现。例如,以下代码将`HSlider`组件的值`fsize.value`绑定到了`Label`组件的`fontSize`属性: ```xml 周末加班的人很累的" fontSize="{fsize.value...
在数据绑定中,[Bindable]元数据标签用于标记一个属性为可绑定的,这样就可以在MXML和ActionScript之间建立实时的数据同步。例如,可以将ArrayCollection定义为一个可绑定的属性,然后在MXML中引用这个属性作为数据...
例如,通过使用Bindable元标签或Bindable类修饰符,可以实现输入控件(如TextInput)与数据模型间的双向绑定: ```mxml <mx:TextInput id="inputField" text="{data.name}" bindable="true" /> ``` 在Flex中,数据...