日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Flex數(shù)據(jù)綁定中綁定到函數(shù)、對象和數(shù)組

本文和大家重點討論一下Flex數(shù)據(jù)綁定中如何綁定到函數(shù)、對象和數(shù)組,F(xiàn)lex數(shù)據(jù)綁定是將一個對象中的數(shù)據(jù)同另一個對象中的數(shù)據(jù)聯(lián)系在一起的過程。

在南華等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,南華網(wǎng)站建設(shè)費用合理。

Flex數(shù)據(jù)綁定

1.綁定到函數(shù)、對象和數(shù)組

(1)綁定函數(shù)以響應(yīng)Flex數(shù)據(jù)綁定事件

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

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

#p# (2)將對象用于Flex數(shù)據(jù)綁定

當(dāng)使用對象進行工作時,不得不考慮什么時候定義到這個對象的綁定?或者考慮什么時候定義一個到這個對象屬性的綁定?

綁定到對象

當(dāng)使一個對象成為Flex數(shù)據(jù)綁定表達式的源時,F(xiàn)lex數(shù)據(jù)綁定發(fā)生在這個對象被更新之時,或者這個對象的引用被更新之時,但不能發(fā)生在這個對象的單個(數(shù)據(jù))域(feild)被更新之時。
下面的范例中,創(chuàng)建了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. }  

因為這個類的兩個屬性不是可綁定屬性,當(dāng)它們被更新時Flex不會發(fā)出事件去觸發(fā)Flex數(shù)據(jù)綁定。接下來在Flex應(yīng)用中使用這個類,如下面的范例所示:

 
 
 
  1.  
  2.  
  3. creationComplete="initObj();"> 
  4.  
  5. importmyComponents.NonBindableObject;  
  6. [Bindable]  
  7. publicvarmyObj:NonBindableObject=newNonBindableObject();  
  8. [Bindable]  
  9. publicvaranotherObj:NonBindableObject=  
  10. newNonBindableObject();  
  11. publicfunctioninitObj():void{  
  12. anotherObj.stringProp='anotherObject';  
  13. anotherObj.intProp=8;  
  14. }  
  15. ]]> 
  16.  
  17. click="myObj.stringProp='newstring';"/> 
  18.  
  19. click="myObj.intProp=10;"/> 
  20.  
  21. click="myObj=anotherObj;"/> 
  22.  

 因為沒有使NonBindableObject類的單個數(shù)據(jù)域(fields)成為可綁定屬性,所以應(yīng)用在兩個Text控件的綁定在應(yīng)用啟動時以及在myObj被更新時才會被更新。在編譯這個應(yīng)用時,編譯器會輸出警告信息,提示Flex數(shù)據(jù)綁定機制不能檢測stringProp和intProp屬性的變化。

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

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

 
 
 
  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]元數(shù)據(jù)標(biāo)記,就可以使得類中所有public變量、以及所有完全具備setter及getter的public屬性成為可綁定的屬性。接下來就可以使用stringProp和intProp屬性作為Flex數(shù)據(jù)綁定的源,如下范例所示:

 
 
 
  1.  
  2.  
  3. creationComplete="initObj();"> 
  4.  
  5. importmyComponents.BindableObject;  
  6. [Bindable]  
  7. publicvarmyObj:BindableObject=newBindableObject();  
  8. [Bindable]  
  9. publicvaranotherObj:BindableObject=  
  10. newBindableObject();  
  11. publicfunctioninitObj():void{  
  12. anotherObj.stringProp='anotherObject';  
  13. anotherObj.intProp=8;  
  14. }  
  15. ]]> 
  16.  
  17. click="myObj.stringProp='newstring';"/> 
  18.  
  19. click="myObj.intProp=10;"/> 
  20.  
  21. click="myObj=anotherObj;"/> 
  22.  

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

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

綁定到數(shù)組

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

 
 
 
  1.  
  2.  
  3.  
  4.  
  5. importmx.collections.ArrayCollection;  
  6. [Bindable]  
  7. publicvarmyAC:ArrayCollection=newArrayCollection([  
  8. "One","Two","Three","Four"]);  
  9. [Bindable]  
  10. publicvarmyAC2:ArrayCollection=newArrayCollection([  
  11. "Uno","Dos","Tres","Quatro"]);  
  12. ]]> 
  13.  
  14. label="ChangeElement" 
  15. click="myAC[0]='modOne'"/> 
  16.  
  17. label="AddElement" 
  18. click="myAC.addItem('newelement');"/> 
  19.  
  20. label="RemoveElement0" 
  21. click="myAC.removeItemAt(0);"/> 
  22.  
  23. label="ChangeArrayCollection" 
  24. click="myAC=myAC2"/> 
  25.  

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

綁定到數(shù)組中的元素

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

 
 
 
  1.  
  2.  
  3.  
  4.  
  5. importmx.collections.ArrayCollection;  
  6. [Bindable]  
  7. publicvarmyAC:ArrayCollection=newArrayCollection([  
  8. "One","Two","Three","Four"]);  
  9. [Bindable]  
  10. publicvarmyAC2:ArrayCollection=newArrayCollection([  
  11. "Uno","Dos","Tres","Quatro"]);  
  12. ]]> 
  13.  
  14. label="ChangeElement" 
  15. click="myAC[0]='newOne'"/> 
  16. label="ChangeArrayCollection" 
  17. click="myAC=myAC2"/> 
  18.  

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

點擊button2時將myAC2拷貝給myAC,這會觸發(fā)對數(shù)組元素的所有Flex數(shù)據(jù)綁定而不論它們是如何實現(xiàn)的。

【編輯推薦】

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

當(dāng)前名稱:Flex數(shù)據(jù)綁定中綁定到函數(shù)、對象和數(shù)組
URL網(wǎng)址:http://www.5511xx.com/article/dhpoidg.html