成人免费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 10:23:46

Flex數據綁定

2010-08-12 11:05:33

Flex數據綁定

2010-07-30 09:16:24

Flex數據綁定

2010-08-13 14:19:44

Flex綁定機制

2010-08-06 10:15:35

Flex綁定

2010-07-30 10:37:23

Flex數據綁定
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久久 | 日韩综合网 | 男人天堂色 | 欧美成人一区二免费视频软件 | 中文一区二区 | 可以在线看的黄色网址 | 日本精品一区二区三区四区 | 日本小电影在线 | 国产精品高潮呻吟久久av野狼 | 中文字幕亚洲视频 | 色婷婷av一区二区三区软件 | 久综合 | 九九久久精品 | 精品久久久久久一区二区 | 一区二区三区国产精品 | 在线看91 | 国产日韩精品视频 | 在线黄 | 亚洲国产精品久久久 | 91成人在线视频 | 国产午夜一级 | 青青草在线播放 | 亚洲男人天堂 | 国久久 | 少妇一级淫片免费播放 | 久久九精品| 国产电影一区二区在线观看 | 亚洲国产一区二区三区, | 国产视频一区在线观看 | 人人澡人人射 | av在线免费不卡 | 亚洲一级av毛片 | 久久高清亚洲 | 日韩中出 | h视频免费在线观看 | 一级做a爰片性色毛片16美国 | 久久久久久毛片免费观看 | 亚洲最新网址 | 久久一| 男人天堂色 | 中文字幕一区在线 |