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

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

新聞中心

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

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

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

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

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

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

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

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

綁定到對(duì)象

當(dāng)使一個(gè)對(duì)象成為Flex數(shù)據(jù)綁定表達(dá)式的源時(shí),F(xiàn)lex數(shù)據(jù)綁定發(fā)生在這個(gè)對(duì)象被更新之時(shí),或者這個(gè)對(duì)象的引用被更新之時(shí),但不能發(fā)生在這個(gè)對(duì)象的單個(gè)(數(shù)據(jù))域(feild)被更新之時(shí)。
下面的范例中,創(chuàng)建了Object類的子類,這個(gè)子類帶有兩個(gè)屬性,stringProp和intProp,但沒有使這兩個(gè)屬性成為可綁定屬性:

 
 
 
  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. }  

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

 
 
 
  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.  

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

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

為了使對(duì)象的屬性可綁定,要?jiǎng)?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ù)組進(jìn)行工作時(shí),比如Array或者ArrayCollection對(duì)象,可以把數(shù)組作為Flex數(shù)據(jù)綁定表達(dá)式的源或目的。
注意:當(dāng)使用數(shù)組作為綁定源時(shí),應(yīng)該使用ArrayCollection類型的數(shù)組,因?yàn)锳rrayCollection類在數(shù)組或數(shù)組元素發(fā)生變化時(shí)能夠發(fā)出事件來觸發(fā)Flex數(shù)據(jù)綁定。比如,對(duì)ArrayCollection.addItem(),ArrayCollection.addItemAt(),ArrayCollection.removeItem(),以及ArrayCollection.removeItemAt()方法的調(diào)用都會(huì)觸發(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.  

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

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

可以使用數(shù)組中的單個(gè)元素作為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.  

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

點(diǎn)擊button2時(shí)將myAC2拷貝給myAC,這會(huì)觸發(fā)對(duì)數(shù)組元素的所有Flex數(shù)據(jù)綁定而不論它們是如何實(shí)現(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)化原則

網(wǎng)頁標(biāo)題:Flex數(shù)據(jù)綁定中綁定到函數(shù)、對(duì)象和數(shù)組
網(wǎng)站路徑:http://m.5511xx.com/article/dhpoidg.html