91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-14 13:52:42 來源:億速云 閱讀:115 作者:小新 欄目:編程語言

這篇文章主要介紹了Flex數據綁定中如何綁定到函數、對象和數組,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Flex數據綁定

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

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

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

<?xmlversionxmlversion="1.0"?>  <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">  <![CDATA[  importflash.events.Event;  //Defineafunctionthatgetsinvoked  //inresponsetothemyFlagChangedevent.  [Bindable(event="myFlagChanged")]  privatefunctionisEnabled():String{  if(myFlag)  return'true';  else  return'false';  }  privatevar_myFlag:Boolean=false;  //Defineasettermethodthatdispatchesthe  //myFlagChangedeventtotriggerthedatabinding.  publicfunctionsetmyFlag(value:Boolean):void{  _myFlag=value;  dispatchEvent(newEvent("myFlagChanged"));  }  publicfunctiongetmyFlag():Boolean{  return_myFlag;  }  ]]>

(2)將對象用于Flex數據綁定

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

綁定到對象

當使一個對象成為Flex數據綁定表達式的源時,Flex數據綁定發生在這個對象被更新之時,或者這個對象的引用被更新之時,但不能發生在這個對象的單個(數據)域(feild)被更新之時。
下面的范例中,創建了Object類的子類,這個子類帶有兩個屬性,stringProp和intProp,但沒有使這兩個屬性成為可綁定屬性:

packagemyComponents  {  //binding/myComponents/NonBindableObject.as  //Makenoclasspropertiesbindable.  publicclassNonBindableObjectextendsObject{  publicfunctionNonBindableObject(){  super();  }  publicvarstringProp:String="Stringproperty";  publicvarintProp:int=52;  }  }

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

<?xmlversionxmlversion="1.0"?>  <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initObj();">  <![CDATA[  importmyComponents.NonBindableObject;  [Bindable]  publicvarmyObj:NonBindableObject=newNonBindableObject();  [Bindable]  publicvaranotherObj:NonBindableObject=  newNonBindableObject();  publicfunctioninitObj():void{  anotherObj.stringProp='anotherObject';  anotherObj.intProp=8;  }  ]]>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.stringProp" click="myObj.stringProp='newstring';"/>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.intProp" click="myObj.intProp=10;"/>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj" click="myObj=anotherObj;"/>

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

(3)綁定到對象的屬性

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

packagemyComponents  {  //binding/myComponents/BindableObject.as  //Makeallclasspropertiesbindable.  [Bindable]  publicclassBindableObjectextendsObject{  publicfunctionBindableObject(){  super();  }  publicvarstringProp:String="Stringproperty";  publicvarintProp:int=52;  }  }

通過在類定義之前放置[Bindable]元數據標記,就可以使得類中所有public變量、以及所有完全具備setter及getter的public屬性成為可綁定的屬性。接下來就可以使用stringProp和intProp屬性作為Flex數據綁定的源,如下范例所示:

<?xmlversionxmlversion="1.0"?>  <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initObj();">  <![CDATA[  importmyComponents.BindableObject;  [Bindable]  publicvarmyObj:BindableObject=newBindableObject();  [Bindable]  publicvaranotherObj:BindableObject=  newBindableObject();  publicfunctioninitObj():void{  anotherObj.stringProp='anotherObject';  anotherObj.intProp=8;  }  ]]>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.stringProp" click="myObj.stringProp='newstring';"/>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj.intProp" click="myObj.intProp=10;"/>  <mx:Buttonlabelmx:Buttonlabel="ChangemyObj" click="myObj=anotherObj;"/>

(4)在綁定中使用數組

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

綁定到數組

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

<?xmlversionxmlversion="1.0"?>  <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">  <![CDATA[  importmx.collections.ArrayCollection;  [Bindable]  publicvarmyAC:ArrayCollection=newArrayCollection([  "One","Two","Three","Four"]);  [Bindable]  publicvarmyAC2:ArrayCollection=newArrayCollection([  "Uno","Dos","Tres","Quatro"]);  ]]>  <mx:Button label="ChangeElement" click="myAC[0]='modOne'"/>  <mx:Button label="AddElement" click="myAC.addItem('newelement');"/>  <mx:Button label="RemoveElement0" click="myAC.removeItemAt(0);"/>  <mx:Button label="ChangeArrayCollection" click="myAC=myAC2"/>

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

綁定到數組中的元素

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

<?xmlversionxmlversion="1.0"?>  <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">  <![CDATA[  importmx.collections.ArrayCollection;  [Bindable]  publicvarmyAC:ArrayCollection=newArrayCollection([  "One","Two","Three","Four"]);  [Bindable]  publicvarmyAC2:ArrayCollection=newArrayCollection([  "Uno","Dos","Tres","Quatro"]);  ]]>  <mx:Buttonidmx:Buttonid="button1" label="ChangeElement" click="myAC[0]='newOne'"/> <mx:Buttonidmx:Buttonid="button2" label="ChangeArrayCollection" click="myAC=myAC2"/>

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

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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Flex數據綁定中如何綁定到函數、對象和數組”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金坛市| 徐汇区| 青田县| 光泽县| 宿迁市| 寿宁县| 西乌珠穆沁旗| 莎车县| 综艺| 奉新县| 蚌埠市| 内丘县| 田林县| 阿城市| 惠来县| 南皮县| 武城县| 灵山县| 科技| 蓬莱市| 申扎县| 建德市| 南昌市| 通榆县| 新乡县| 吴堡县| 岳普湖县| 贵州省| 张家口市| 三门县| 宁阳县| 南开区| 沅陵县| 庆元县| 聂拉木县| 个旧市| 确山县| 祁门县| 健康| 丹阳市| 新兴县|