使用数据绑定时,Flex 会自动把一个对象的数据复制,提供给另一个对象使用,提供数据一方称为数据源对象,使用数据的一方称为目标对象。当数据源对象的数据发生变化时,目标对象的数据会自动更新。
实质上,绑定的实现也是借助事件机制来完成的,当目标使用了数据绑定,目标对象就会侦听数据源的某一个固定事件。如果数据源改变,就派发事件,通知目标对象更新最新数据。当然这个过程都是由Flex来完成。
作为绑定的数据源对象,必须支持绑定--对象有派发改变事件的能力。
使用数据绑定的多数情况:
1、将后台数据(通过Web Service 或 Remoting 方式得到的数据)绑定给控件
2、把控件数据绑定给后台通信对象,发送给后台服务端
3、后台返回数据和数据模型 进行绑定
4、组件或对象属性的数据绑定
绑定方式
将数据源对象房子大括号{}中,作为目标对象的值就可以了。
backgroundColor="{mColor.value.toString()}"
在{}中也可以使用AS:
text="{(Number(age_txt.text)>= 16)?'成年':'未成年'}"
也可以使用函数:
scaleX="{doResize(scale)}"
使用[Bindable]来实现绑定功能,[Bindable]是元标签的一种,专门用来定义绑定中的数据源对象,event事件名指当前数据源发生变化时,数据源所在对象派发的事件类型,可选的,默认:propertyChange :
[Bindable]
[Bindabl(event="eventname")]
比如我们定义scale:
[Bindable]
private var scale:Number = 1;
使用<mx:Binding> 标签来定义数据绑定:
<mx:Binding source="users.user.blogURL" destination="pic.toolTip" />
其中source指定数据源,destination指定目标对象的属性,两者的数据类型必须相同
举例:给下面的public变量加上[Bindable]
[Bindable]
public var name:String = "";
作为一个public变量,肯定既可以被赋值,也能赋值给别的变量。绑定的作用就是,当name改变的时候(被赋值了),可能通知其它被name影响(赋值给它们)的变量发生改变。这里的“可能”就需要编译器来判断,这就是为什么元数据是给编译器用的原因了。在mxml里用{}的语法的地方就是绑定的对象,比如label={xxx.name},当name变化,label也跟着变化。这样,我们只是很简单的改变了name的值,由于有绑定,界面上的label也跟着自动变化了。
Bindable使用地方
三个地方:类, 变量, getter/setter。是不是public没有关系,private的就只能给自家用呗。用在Class上就是简单的给所有的public属性(包括变量,getter/setter,普通方法)加上[Bindable],可是一般的方法不能用[Bindable],于是一般就能看到flex给了个warning,直接无视。变量就是上面讲的,很简单略掉。
用在只读,只写属性(getter/setter)上面,因为getter和setter很像方法,用起来会有点不同。看看这个例子:
[Bindable]
private var content:Array = new Array();
[Bindable]
public function set _content(ct:String):void
{
content = ct.split(SEP);
}
[Bindable]
public function get _wholeText():String
{
if(content.length == 0)
{
return "";
}
else
{
var _w:String = "";
for(var i:int=0 ; i<content.length ; i++)
{
_w += content[i] + "\r\n";
}
return _w;
}
}
原来的设想是content绑定_wholeText,可它是不工作的。为什么?_wholeText太复杂了,被编译器排除在“可能”之外,编译器认为没有绑定关系,如果只是简单的return content,倒是可以的。
分享到:
相关推荐
在本篇文章中,我们将深入探讨一个具体的Flex图片上传实例,并对其中涉及的关键技术点进行详细解读。此实例不仅提供了一个实际的上传图片的应用场景,而且还包含了一些实用的代码片段,这对于想要了解如何在Flex中...
### FLEX动态树与动态图表:深入理解及应用 在Adobe Flex框架中,`Tree`控件被广泛用于展示层次结构的数据,如目录、组织结构等。本文将深入解析如何在Flex中创建并自定义动态树,以及如何通过事件处理实现更高级的...
本文将深入探讨“FLEX数据绑定”这一专题,它是一种强大的机制,允许视图与模型之间的自动同步,使得开发者能够更加专注于业务逻辑而不是繁琐的同步操作。本文是系列文章的第一部分,主要介绍数据绑定的基本概念、...
《Flex3.0学习手册》是Bēniaǒ成长笔记中的一部分,由“虾皮工作室”整理而成,旨在帮助读者深入了解Flex3.0及其相关技术。本书不仅涵盖了Flex3.0的基础知识,还涉及到了ActionScript 3.0的应用以及与Flash Media ...
让我们深入分析这段代码: 1. **初始化阶段**:`initHandler()`函数在应用启动时调用,将`_fruits`数组设置为下拉列表`fruitCB`的数据提供者,这使得下拉列表可以显示数组中的各个水果名称。 2. **属性与方法**:`...
本文将深入探讨如何使用Flex进行Excel文件的读取与写入操作,并基于提供的代码片段进行详细的分析。 #### 二、基础知识 1. **Flex概述**:Flex是一种开源框架,用于构建跨浏览器、跨平台的应用程序。它提供了丰富...
2.4.5 使用Bindable元数据标记 40 2.4.6 绑定到函数、对象和数组 43 2.4.7 使用可绑定属性链进行工作 46 2.5 Flex中的组件化编程 46 2.5.1 认识Flex组件和组件容器 47 2.5.2 组件生命周期与布局 51 2.5.3 组件...
通过上述分析,我们了解到这个Flex实时曲线图的核心实现是利用`setInterval`定时器不断向`ArrayCollection`数据集合中添加新生成的数据,并通过`mx:LineChart`组件将这些数据可视化展示出来。这种方式简单而有效,...
这些修正不仅有助于新手避免学习过程中的误区,还能帮助他们更深入地理解Flex的各项技术细节。通过仔细研究这些修正内容,学习者可以更快地掌握Flex的基本概念和技术要点,为后续的项目开发打下坚实的基础。
通过分析HelloWorld2.mxml文件,我们将深入了解Flex中的数据绑定机制及其基本用法。 #### 二、Flex与数据绑定 Flex是一种用于构建跨平台富互联网应用(RIA)的软件框架,支持多种编程语言和技术栈。数据绑定是Flex的...
通过上述分析,我们不仅了解了如何在Flex中创建字体属性框,还深入探讨了MXML与ActionScript的结合使用、数据绑定机制以及如何利用UI组件来实现字体属性的动态设置。这对于理解和开发类似的Flex应用程序非常有帮助。
在本篇内容中,我们将深入探讨如何在Flex文件中利用HTML来渲染文本,并结合实例代码进行解析。通过本文,读者可以全面了解Flex框架下HTML文本渲染的方法与应用场景,以及如何结合Flex组件完成多媒体控制功能。 ### ...
### Flex代码分析 #### 1. **XML声明与命名空间定义** 在代码最开始的部分,我们看到的是XML文档声明和命名空间定义: ```xml xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe....
通过记录和分析日志,开发者能够深入了解程序的运行状况,这对于及时发现并解决问题至关重要。日志可以分为静态日志分析、代码跟踪调试以及动态监测分析三种形式,其中静态日志分析是最基础且常用的日志处理方式之一...
### OpenScales图层控制与...通过对示例代码的分析,我们不仅了解了如何设置和配置这些组件,还深入探讨了如何解决实际应用中可能遇到的问题,如保持复选框状态不变等。希望本文能帮助您更好地理解并应用于您的项目中。
1. **布局控件**: Xamarin.Forms 提供了几种布局选项,如 StackLayout、Grid、RelativeLayout 和 FlexLayout。这些布局可以根据屏幕大小自动调整内容的排列方式。例如,StackLayout 可以按垂直或水平堆叠子元素,而 ...