学习笔记 如何将对象用于Flex数据绑定

开发 后端
本文向大家介绍一下如何将对象用于Flex数据绑定,Flex数据绑定是将一个对象中的数据同另一个对象中的数据联系在一起的过程。

本文和大家重点讨论一下如何将对象用于Flex数据绑定,当使用对象进行工作时,不得不考虑什么时候定义到这个对象的绑定?或者考虑什么时候定义一个到这个对象属性的绑定?

将对象用于Flex数据绑定

当使用对象进行工作时,不得不考虑什么时候定义到这个对象的绑定?或者考虑什么时候定义一个到这个对象属性的绑定?

绑定到对象

当使一个对象成为Flex数据绑定表达式的源时,Flex数据绑定发生在这个对象被更新之时,或者这个对象的引用被更新之时,但不能发生在这个对象的单个(数据)域(feild)被更新之时。
下面的范例中,创建了Object类的子类,这个子类带有两个属性,stringProp和intProp,但没有使这两个属性成为可绑定属性:
 

  1. packagemyComponents  
  2. {  
  3. //binding/myComponents/NonBindableObject.as  
  4. //Makenoclasspropertiesbindable.  
  5. publicclassNonBindableObjectextendsObject{  
  6. publicfunctionNonBindableObject(){  
  7. super();  
  8. }  
  9. publicvarstringProp:String="Stringproperty";  
  10. publicvarintProp:int=52;  
  11. }  
  12. }  

因为这个类的两个属性不是可绑定属性,当它们被更新时Flex不会发出事件去触发Flex数据绑定。接下来在Flex应用中使用这个类,如下面的范例所示:
 

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" 
  4. creationComplete="initObj();"> 
  5.  
  6. <![CDATA[  
  7. importmyComponents.NonBindableObject;  
  8. [Bindable]  
  9. publicvarmyObj:NonBindableObject=newNonBindableObject();  
  10. [Bindable]  
  11. publicvaranotherObj:NonBindableObject=  
  12. newNonBindableObject();  
  13. publicfunctioninitObj():void{  
  14. anotherObj.stringProp='anotherObject';  
  15. anotherObj.intProp=8;  
  16. }  
  17. ]]> 
  18.  
  19. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.stringProp" 
  20. click="myObj.stringProp='newstring';"/> 
  21.  
  22. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.intProp" 
  23. click="myObj.intProp=10;"/> 
  24.  
  25. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj" 
  26. click="myObj=anotherObj;"/> 
  27.  

 因为没有使NonBindableObject类的单个数据域(fields)成为可绑定属性,所以应用在两个Text控件的绑定在应用启动时以及在myObj被更新时才会被更新。在编译这个应用时,编译器会输出警告信息,提示Flex数据绑定机制不能检测stringProp和intProp属性的变化。

绑定到对象的属性

为了使对象的属性可绑定,要创建新的类定义,如下面的范例所示:
 

  1. packagemyComponents  
  2. {  
  3. //binding/myComponents/BindableObject.as  
  4. //Makeallclasspropertiesbindable.  
  5. [Bindable]  
  6. publicclassBindableObjectextendsObject{  
  7. publicfunctionBindableObject(){  
  8. super();  
  9. }  
  10. publicvarstringProp:String="Stringproperty";  
  11. publicvarintProp:int=52;  
  12. }  
  13. }  

通过在类定义之前放置[Bindable]元数据标记,就可以使得类中所有public变量、以及所有完全具备setter及getter的public属性成为可绑定的属性。接下来就可以使用stringProp和intProp属性作为Flex数据绑定的源,如下范例所示:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" 
  4. creationComplete="initObj();"> 
  5.  
  6. <![CDATA[  
  7. importmyComponents.BindableObject;  
  8. [Bindable]  
  9. publicvarmyObj:BindableObject=newBindableObject();  
  10. [Bindable]  
  11. publicvaranotherObj:BindableObject=  
  12. newBindableObject();  
  13. publicfunctioninitObj():void{  
  14. anotherObj.stringProp='anotherObject';  
  15. anotherObj.intProp=8;  
  16. }  
  17. ]]> 
  18.  
  19. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.stringProp" 
  20. click="myObj.stringProp='newstring';"/> 
  21.  
  22. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.intProp" 
  23. click="myObj.intProp=10;"/> 
  24.  
  25. <mx:Buttonlabelmx:Buttonlabel="ChangemyObj" 
  26. click="myObj=anotherObj;"/> 

【编辑推荐】

  1. Flex数据绑定中绑定到函数、对象和数组
  2. 在Flex数据绑定中使用数组
  3. 术语汇编 Flex数据绑定概述
  4. 解析Flex全屏模式设置方法
  5. Flex内存泄露解决方法和内存释放优化原则

 

责任编辑:佚名 来源: myspace.com
相关推荐

2010-08-12 11:05:33

Flex数据绑定

2010-08-11 15:35:47

Flex DataGr

2010-07-30 09:28:09

Flex数据绑定

2010-08-04 09:26:27

Flex数据

2010-07-30 10:45:08

Flex数据绑定

2010-08-11 15:51:45

Flex DataGr

2010-08-11 08:44:01

Flex对象

2010-07-28 13:11:13

Flex数据绑定

2010-08-10 16:41:54

FlexJSP

2010-07-28 13:31:10

Flex数据绑定

2010-07-27 10:39:25

Flex组件

2023-02-17 12:07:45

ChatGPTPython

2010-08-05 15:06:19

Flex数据绑定

2010-08-12 11:34:15

Flex数据绑定

2010-07-30 09:08:21

Flex数据绑定

2010-07-30 13:08:38

Flex调用JavaS

2010-08-10 10:56:39

2010-07-28 13:40:44

Flex数据绑定

2010-07-30 13:52:17

Flex组件

2010-08-10 15:26:38

Flex应用程序
点赞
收藏

51CTO技术栈公众号