Flex DataBinding用法指导

开发 后端
本文向大家介绍一下Flex DataBindIng的概念,简单的说就是当绑定源属性发生变化时,Flex会把绑定源变化后属性的值赋给目的物的属性。

本文和大家重点讨论一下Flex DataBinding的概念,Flex DataBindIng简单的说就是当绑定源属性发生变化时,Flex会把绑定源变化后属性的值赋给目的物的属性,做到了数据同步。

Flex DataBinding详解

[Bindable]作用

Flex DataBindIng简单的说就是当绑定源属性发生变化时,Flex会把绑定源变化后属性的值赋给目的物的属性,做到了数据同步。

◆Flex DataBindIng什么时候发生:

1.在绑定源属性值发生改变时发生。

2.在绑定源发出initialize事件时绑定发生一次。

◆让属性具有可绑定功能:

一般的,只要在属性前加上[Bindable]或[Bindable(event="eventname")]

元标记即可

注意:

如果没有标出触发绑定的事件,正如[Bindable],Flex会自动为绑定加上propertyChange事件,当源数据发生变化时,Flex将自动派发该事件,触发数据绑定。如果修改后数据和源数据“===”也就是全等,那么Flex将不会触发数据绑定。

如果标出的触发绑定的事件,正如[Bindable(event="eventname")],那么在源数据发生改变的时候,必须dispatch出该事件才能触发数据绑定。不论修改后数据和源数据是否全等,Flex都将会触发数据绑定,需要自己编程控制,例如:

  1. <mx:Script> 
  2. <!--[CDATA[  
  3. [Bindable(event="hhhh")]  
  4. privatevarss:String="aaa";  
  5. privatefunctiondoTest():void  
  6. {  
  7. ss="bbb";  
  8. f(ss!=="aaa")//判断和源数据是否相等,不相等则触发绑定  
  9. this.dispatchEvent(newEvent("hhhh"));  
  10. }  
  11. ]]--> 
  12. </mx:Script> 
  13. <mx:Texttextmx:Texttext="{ss}"/> 
  14. <mx:Buttonclickmx:Buttonclick="doTest()"/> 

如果没有this.dispatchEvent(newEvent("hhhh"))这句,那么你点击按钮是没有设么作用的。另外当申明自定义触发事件时,用ChangeWatcher来监控其变化,发现虽然目的源值变了,但是ChangeWatcher却监控不到变化,同样ChangeWatcher也监控不到非共有变量的变化。关于ChangeWatcher,下面会提到。

◆Flex DataBinding绑定函数——Functions,对象——Object,数组——Arrays

函数:

你可以在{}中直接使用函数。例如:<mx:Texttext="{Matn.random()*ss}"/>

上面这个没有什么好讲的,关于函数绑定下面这个比较重要:

  1. <mx:Script> 
  2. <!--[CDATA[  
  3. publicvarss:String="aaa";  
  4. [Bindable(event="hhhh")]  
  5. privatefunctiongg():String  
  6. {  
  7. returnss;  
  8. }  
  9. privatefunctiondoTest():void  
  10. {  
  11. ss=Math.random().toString();  
  12. this.dispatchEvent(newEvent("hhhh"));  
  13. }  
  14. ]]--> 
  15. </mx:Script> 
  16. <mx:Texttextmx:Texttext="{gg()}"/> 
  17. <mx:Buttonclickmx:Buttonclick="doTest()"/> 

这样给函数加一个[bindable],便使函数具有Flex DataBinding绑定功能,但是如果不申明自定义触发事件,只能在组件初始化时绑定一次,点击以上按钮是没有什么作用的。大家可以自己试试。

还有getter和setter函数,比较重要,给getter或setter函数加上[bindable],用不着两个都加,加一个就可以了,例如:

  1. <mx:Script> 
  2. <!--[CDATA[  
  3. publicvarss:String="aaa";  
  4. [Bindable]  
  5. publicfunctiongetgg():String  
  6. {  
  7. returnss;  
  8. }  
  9. publicfunctionsetgg(value:String):void  
  10. {  
  11. ss=value;  
  12. }  
  13. privatefunctiondoTest():void  
  14. {  
  15. gg=Math.random().toString();  
  16. this.dispatchEvent(newEvent("hhhh"));  
  17. }  
  18. ]]--> 
  19. </mx:Script> 
  20. <mx:Texttextmx:Texttext="{gg}"/> 
  21. <mx:Buttonclickmx:Buttonclick="doTest()"/> 

同样能达到Flex DataBinding绑定效果,如果只有一个getter方法,那么要想实现数据绑定,就需要申明自定义触发事件了,大家可以自己试试。

【编辑推荐】

  1. Flex Dataprovider和Data概念解析
  2. Flex必须了解的那些事
  3. 解析Flex ArrayCollection复制的两种方式
  4. FlexBuilder3.0与Eclipse3.4的完美结合
  5. Flex ComboBox和Datagrid组件用法指导

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-08-05 10:08:06

Flex效果

2010-07-29 09:44:17

Flex编程

2010-07-30 10:02:40

Flex验证控件

2010-07-28 10:38:29

Flex开源框架

2010-07-28 10:48:48

FlexReport开

2010-08-05 13:44:12

Flex布局

2010-08-05 09:05:14

Flex Button

2010-08-06 10:32:49

Flex数据类型

2010-08-13 13:46:04

Flex效果组件

2010-07-27 13:53:15

Flex ComboB

2010-08-13 11:21:31

Flex渲染器

2010-08-10 14:25:42

SilkTestFlex

2010-08-10 14:34:37

QTPFlex

2010-07-27 14:27:09

FlexArray

2010-08-04 11:23:15

Flex字符串

2010-08-25 10:21:49

CSSmargin

2010-07-26 14:45:17

Perl Hash

2010-09-27 15:39:37

JVM监控工具

2010-07-23 14:12:14

Perl Hash

2010-08-11 16:03:02

Flex DataGr
点赞
收藏

51CTO技术栈公众号