`

Flex Bindable

    博客分类:
  • flex
 
阅读更多
对一个类声明绑定,相当于给这个类里的所有属性都声明了绑定。等同于你把这个类里的所有属性都声明绑定。
那么这个类的属性如果发生了变化,则会触发绑定。

比如
[Bindable]
public ClassA{
//这里用static是为了调用方便,非static是一样的
public static var data:Object
}
如果在外面引用,比如<mx:Label text="{ClassA.data}" />
当data属性改变后,这个label是可以变化的。

但是有个细节要注意到,绑定之所以会被触发,是因为被绑定的对象的引用变化了,如果引用没有改变则不会触发绑定。详细举例来说明

刚才说到。ClassA.data其实也被声明了绑定,如果我们这么写
ClassA.data="Test Binding"是会触发绑定的,
因为,data属性从null变为了一个string

如果我们在定义data时,他不是一个基础类型(as里,基础数据类型是String,int,uint,Number),是一个封装类型时(XML,Object,Array。。。),我们就要考虑到在封装类型内部是否实现了抛出绑定。什么意思呢

如果这个data属性被定义为某个 不为null 的封装类,比如是一个Array
public static var data:object = [ {name:'user1'}, {name:'user2'} ];

如果我们在组件中这样引用
<datagrid dataprovider="{ClassA.data}"> ...<column datafield="name" />

当我们在代码中这样改变data时
ClassA.data[0].name="change!"

结果是:没有发生改变?为什么呢?

刚刚说到了,绑定是检测声明了绑定对象(或属性)的引用是否改变,实际上,我们声明只到达data这个属性(对象)为止,至于里面的每个元素的每个属性我们并没有绑定,如果这些发生了改变,绑定是不会触发的。

这点,即使不是对类进行绑定,直接绑定其他变量时也是相同遵守的。

因此,很多人使用bindable去绑定结果集的时候,对结果集的操作不会影响到引用的控件,
有种避免的办法就是对所有自定义类型对象都声明绑定,比如这个data属性,可以定义为User类,并对这个User类声明绑定。
这样只要单个对象有绑定,那么就不会存在这个问题,但是这样也带来不少麻烦,定义如此多的VO,也会很繁琐。
特别是如果不是使用的ro,而是用的httpservice之类的请求,返回结果都是xml、xmllist等对象的情况下,这个办法就不是很好用了。因为必须转换到自定义的集合中去。

因此绑定也并非是万能的,某些时候还是需要手动的去处理一下。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以上来自RIACHINA

[Bindable]专门用来定义绑定中的数据源对象,
[Bindable]的用法:

1.变量前定义:使用[Bindable]后,下一行表达式定义的变量就可以被用在绑定中。

方法一:[Bindable]

方法二:[Bindable(event=”eventname”)] event事件名指当数据源发生变化时,

数据源所在对象派发的事件类型,它是可选的。如果不写,默认事件名是“propertyChange”

2.函数前定义:此函数必须通过setter和getter方式定义, [Bindable]要用在setter函数前面。

[Bindable]

public function set Num(n:Number):void{

num=n;

}

public function get Num():void{

return num;

}

虽然是方法,但使用时,也是用 . 语法,即 ~ . Num。

3. 公用类前定义:当使用了绑定标签后,这个类的所有公有变量,包括setter和getter都可以用于绑定。

package tree{

[Bindable]

public class myTest{

private var num:Number=0;

public var className:String=”aaa”; //可用数据绑定

public function set Num(n:Number):void{ //可用数据绑定

num=n;

}

public function get Num():void{

return num;

}

}

}
分享到:
评论

相关推荐

    Flex Bindable 的用法

    `[Bindable]`是Flex中最常用的元数据之一,它主要用于实现数据绑定功能。数据绑定是Flex应用中的核心概念,它允许视图组件与应用程序模型之间的数据自动同步。 元数据不是语言本身的一部分,而是为编译器设计的,...

    flex 4 生命周期

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

    细细品味Flex——新Flex学习手册.pdf

    - **动态的数据展现源于灵活的数据绑定**:介绍了数据绑定的基本概念,包括绑定表达式、[Bindable]符号、`&lt;mx:Binding&gt;`标签、BindingUtils和自定义数据绑定。 - **使用样式(style)和皮肤(Skin)两大画笔为应用程序...

    Flex4 AIP 中文说明

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

    flex 学习资料汇总

    [Bindable] private var count:int = 0; protected function button_clickHandler(event:MouseEvent):void { count++; label.text = count.toString(); } ]]&gt; (event)" /&gt; ``` - **函数声明**:在...

    Flex与Java通过实体传递数据

    在Flex中,为了能够将前端的数据对象与后端的服务进行有效映射,通常会在Flex端定义一个实体类,并使用`Bindable`和`RemoteClass`注解来关联前后端的数据模型。 ```as [Bindable] [RemoteClass(alias=...

    flex与JS交互示例

    [Bindable] public function callFromJS():void { // 方法体 } ``` 在HTML中,可以这样调用: ```javascript var app = document.getElementById('myFlexApp'); app.callFromJS(); ``` 3. **事件处理**:...

    flex数据绑定的原理

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

    Flex图片上传实例

    ### Flex图片上传实例详解 在本篇文章中,我们将深入探讨一个具体的Flex图片上传实例,并对其中涉及的关键技术点进行详细解读。此实例不仅提供了一个实际的上传图片的应用场景,而且还包含了一些实用的代码片段,这...

    Flex与.NET交互

    [Bindable] public class User { public var id:int; public var name:String; // ... } ``` ```csharp public class User { public int Id { get; set; } public string Name { get; set; } // ... } ``` ...

    Flex分页技术

    `[Bindable]`元标签用于标记变量,使其在改变时能触发视图的自动更新。例如,`_xmllistCollection`被标记为可绑定,当数据源发生变化时,DataGrid会自动更新显示。 综上所述,Flex开发Flex dataGrid分页技术涵盖了...

    基于Flex的ArcGIS开发经典例子说明文档

    ### 基于Flex的ArcGIS开发经典案例详解 #### 案例一:ArcGIS.Server.9.3与ArcGIS API for Flex实现基本的地图浏览 **目的:** 本案例旨在展示如何通过ArcGIS API for Flex在Flex应用程序中实现对自定义的ArcGIS....

    Flex4.5常见问题总结

    若希望某个对象作为数据绑定的源,需在其属性前加上`[Bindable]`或`[Bindable("eventname")]`标记,确保属性变化时能触发数据绑定事件。 综上所述,Flex4.5提供了丰富的工具和机制,帮助开发者构建高性能、高互动性...

    Flex Data Binding详解

    如果没有指定触发绑定的特定事件(如`[Bindable]`),Flex会默认监听`propertyChange`事件。只有当属性值的引用改变(即`!=`而不是`===`),Flex才会触发数据绑定。如果指定了自定义事件(如`[Bindable(event="event...

    自己整理的flex与java结合的学生管理系统-很好的入门及提升的例子

    5. 数据管理:在Flex客户端,数据通常被封装在Flex的Model类中,这些Model类通过Bindable注解与视图组件关联,当数据发生变化时,视图会自动更新。而在服务器端,数据管理通常涉及实体类(Entity)和DAO,实体类对应...

    FLEX动态树 动态图表

    ### FLEX动态树与动态图表:深入理解及应用 在Adobe Flex框架中,`Tree`控件被广泛用于展示层次结构的数据,如目录、组织结构等。本文将深入解析如何在Flex中创建并自定义动态树,以及如何通过事件处理实现更高级的...

    flex的mvc模式

    模型对象通常被标记为`Bindable`,这样当它们的数据发生变化时,可以自动通知视图进行更新。 **View(视图)** 视图层负责展示数据和接收用户输入。在Flex中,视图通常由MX或Spark组件构成,如Canvas、Button、...

    Flex4 Declarations in ActionScript

    《Flex4声明式编程在ActionScript中的应用探析》 Flex4是Adobe Flex框架的一个重要版本,它引入了全新的ActionScript编程模型,显著提升了开发效率和应用程序的表现力。本篇文章将深入探讨Flex4中的一项核心特性...

    flex 异步加载tree

    `[Bindable]` 注解表示`loadingxml`变量的变化将会自动更新UI。这意味着当数据变化时,树组件将自动刷新其视图。 #### 3. FunService类的作用 `FunService` 类似乎是自定义的服务类,负责与后端交互获取数据。在这...

Global site tag (gtag.js) - Google Analytics