成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Flex數據綁定中綁定到函數、對象和數組

開發 后端
Flex數據綁定為在應用的不同層之間傳遞數據提供了便捷方法,本文向大家簡單介紹一下如何綁定導函數、對象和數組。

本文和大家重點討論一下Flex數據綁定中如何綁定到函數、對象和數組,Flex數據綁定是將一個對象中的數據同另一個對象中的數據聯系在一起的過程。

Flex數據綁定

1.綁定到函數、對象和數組

(1)綁定函數以響應Flex數據綁定事件

可以把使用“不可綁定的參數”的函數作為Flex數據綁定表達式的源。但是,必須有一種辦法能夠激活這個函數以更新Flex數據綁定的目的屬性。
在下面的例子中,使用了[Bindable]元數據標記來指定Felx調用isEnabled()函數以響應myFlagChanged事件。當myFlag的setter方法被調用時,它就發出了一個myFlagChanged事件,這個事件觸發任何使用isEnabled()函數作為源的Flex數據綁定。
 

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  4.  
  5. <![CDATA[  
  6. importflash.events.Event;  
  7. //Defineafunctionthatgetsinvoked  
  8. //inresponsetothemyFlagChangedevent.  
  9. [Bindable(event="myFlagChanged")]  
  10. privatefunctionisEnabled():String{  
  11. if(myFlag)  
  12. return'true';  
  13. else  
  14. return'false';  
  15. }  
  16. privatevar_myFlag:Boolean=false;  
  17. //Defineasettermethodthatdispatchesthe  
  18. //myFlagChangedeventtotriggerthedatabinding.  
  19. publicfunctionsetmyFlag(value:Boolean):void{  
  20. _myFlag=value;  
  21. dispatchEvent(newEvent("myFlagChanged"));  
  22. }  
  23. publicfunctiongetmyFlag():Boolean{  
  24. return_myFlag;  
  25. }  
  26. ]]> 
  27.  

#p# (2)將對象用于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屬性的變化。

#p#(3)綁定到對象的屬性

為了使對象的屬性可綁定,要創建新的類定義,如下面的范例所示:
 

  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;"/> 
  27.  

#p# (4)在綁定中使用數組

在使用數組進行工作時,比如Array或者ArrayCollection對象,可以把數組作為Flex數據綁定表達式的源或目的。
注意:當使用數組作為綁定源時,應該使用ArrayCollection類型的數組,因為ArrayCollection類在數組或數組元素發生變化時能夠發出事件來觸發Flex數據綁定。比如,對ArrayCollection.addItem(),ArrayCollection.addItemAt(),ArrayCollection.removeItem(),以及ArrayCollection.removeItemAt()方法的調用都會觸發Flex數據綁定。

綁定到數組

通常將數組綁定給Flex控件的dataProvider屬性,下面范例說明將數組綁定用于List控
件:
 

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  4.  
  5. <![CDATA[  
  6. importmx.collections.ArrayCollection;  
  7. [Bindable]  
  8. publicvarmyAC:ArrayCollection=newArrayCollection([  
  9. "One","Two","Three","Four"]);  
  10. [Bindable]  
  11. publicvarmyAC2:ArrayCollection=newArrayCollection([  
  12. "Uno","Dos","Tres","Quatro"]);  
  13. ]]> 
  14.  
  15. <mx:Button 
  16. label="ChangeElement" 
  17. click="myAC[0]='modOne'"/> 
  18.  
  19. <mx:Button 
  20. label="AddElement" 
  21. click="myAC.addItem('newelement');"/> 
  22.  
  23. <mx:Button 
  24. label="RemoveElement0" 
  25. click="myAC.removeItemAt(0);"/> 
  26.  
  27. <mx:Button 
  28. label="ChangeArrayCollection" 
  29. click="myAC=myAC2"/> 
  30.  

 這個例子定義了一個ArrayCollection對象,然后將List控件的dataProvider屬性設置為對這個ArrayCollection的Flex數據綁定。當修改ArrayCollection對象中的元素,或者修改對ArrayCollection對象的引用,都會觸發Flex數據綁定。

綁定到數組中的元素

可以使用數組中的單個元素作為Flex數據綁定源,如下例所示:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  4.  
  5. <![CDATA[  
  6. importmx.collections.ArrayCollection;  
  7. [Bindable]  
  8. publicvarmyAC:ArrayCollection=newArrayCollection([  
  9. "One","Two","Three","Four"]);  
  10. [Bindable]  
  11. publicvarmyAC2:ArrayCollection=newArrayCollection([  
  12. "Uno","Dos","Tres","Quatro"]);  
  13. ]]> 
  14.  
  15. <mx:Buttonidmx:Buttonid="button1" 
  16. label="ChangeElement" 
  17. click="myAC[0]='newOne'"/> 
  18. <mx:Buttonidmx:Buttonid="button2" 
  19. label="ChangeArrayCollection" 
  20. click="myAC=myAC2"/> 
  21.  

 如果通過方括號語法[]來指定數組元素作為Flex數據綁定表達式的源,那么Flex數據綁定只在應用啟動時觸發,或者在數組或其引用被更新時觸發。當這個數組元素被更新的時候不會觸發Flex數據綁定。
但Flex數據綁定表達式中的myAC.getItemAt(0)則會在該數組元素變化時被觸發更新。因此,id為text2的Text控件在點擊button1時會被更新,而id為text1的Text控件則不會被更新。
當使用數組中的元素作為Flex數據綁定表示的源時,應當在綁定表達式中使用ArrayCollection.getItemAt()方法。

點擊button2時將myAC2拷貝給myAC,這會觸發對數組元素的所有Flex數據綁定而不論它們是如何實現的。

【編輯推薦】

  1. 技術分享 在ActionScript中如何定義Flex數據綁定
  2. Adobe Flex提供三種方法指定Flex數據綁定
  3. 術語匯編 Flex數據綁定概述
  4. 解析Flex全屏模式設置方法
  5. Flex內存泄露解決方法和內存釋放優化原則

 

責任編輯:佚名 來源: myspace.com
相關推薦

2010-07-30 10:53:53

Flex數據綁定

2010-07-28 13:31:10

Flex數據綁定

2010-07-28 13:11:13

Flex數據綁定

2010-07-30 09:08:21

Flex數據綁定

2010-08-12 11:34:15

Flex數據綁定

2010-08-05 15:06:19

Flex數據綁定

2010-07-28 13:40:44

Flex數據綁定

2010-08-10 10:56:39

2010-07-30 10:58:03

Flex數據綁定

2010-07-28 13:24:20

Flex數據綁定

2010-08-12 10:56:17

Flex數據綁定

2010-08-11 15:35:47

Flex DataGr

2010-08-11 15:51:45

Flex DataGr

2010-07-28 13:48:49

Flex數據綁定

2010-07-30 09:16:24

Flex數據綁定

2010-07-30 10:23:46

Flex數據綁定

2010-08-12 11:05:33

Flex數據綁定

2010-08-13 14:19:44

Flex綁定機制

2010-07-30 10:37:23

Flex數據綁定

2010-08-06 10:15:35

Flex綁定
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜影院网站 | 国产不卡视频在线 | 成人午夜性成交 | 日韩精品在线播放 | 高清黄色毛片 | 久久亚洲综合 | 亚洲视频自拍 | 日韩成人中文字幕 | 一级毛片大全免费播放 | 精品一区二区三区四区外站 | 国产成人在线一区二区 | 中文字幕成人 | 一区二区在线 | 日韩在线视频观看 | 视频一区二区中文字幕 | 欧美一区二区在线播放 | 97国产爽爽爽久久久 | 欧美最猛黑人xxxx黑人 | 国产黄色麻豆视频 | 成人亚洲性情网站www在线观看 | 亚洲精品中文字幕在线观看 | 欧洲精品码一区二区三区免费看 | 国产成人精品久久 | 在线看片网站 | 亚洲天堂久久 | 91香蕉嫩草 | 免费色网址 | 999久久久免费精品国产 | 久干网| 婷婷不卡| 日日干天天干 | 国产 日韩 欧美 制服 另类 | 国产分类视频 | 日韩电影免费在线观看中文字幕 | 午夜av成人 | 国产免费一区 | 久久久久国产一区二区三区不卡 | 麻豆久久久9性大片 | 青青草精品 | 一区二区高清不卡 | 精品久久一区 |