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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
術(shù)語(yǔ)匯編Flex數(shù)據(jù)綁定概述

本文和大家重點(diǎn)討論一下Flex數(shù)據(jù)綁定的概念,F(xiàn)lex數(shù)據(jù)綁定為在應(yīng)用的不同層之間傳遞數(shù)據(jù)提供了便捷方法。Flex數(shù)據(jù)綁定需要一個(gè)源屬性,一個(gè)目的屬性,以及用于表明何時(shí)將數(shù)據(jù)從源屬性拷貝到目的屬性的觸發(fā)事件。當(dāng)源屬性變化時(shí),對(duì)象發(fā)出觸發(fā)事件。

成都創(chuàng)新互聯(lián)公司主營(yíng)昂昂溪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā)公司,昂昂溪h5小程序制作搭建,昂昂溪網(wǎng)站營(yíng)銷(xiāo)推廣歡迎昂昂溪等地區(qū)企業(yè)咨詢(xún)

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

1.關(guān)于Flex數(shù)據(jù)綁定

Flex數(shù)據(jù)綁定是將一個(gè)對(duì)象中的數(shù)據(jù)同另一個(gè)對(duì)象中的數(shù)據(jù)聯(lián)系在一起的過(guò)程。Flex數(shù)據(jù)綁定為在應(yīng)用的不同層之間傳遞數(shù)據(jù)提供了便捷方法。Flex數(shù)據(jù)綁定需要一個(gè)源屬性,一個(gè)目的屬性,以及用于表明何時(shí)將數(shù)據(jù)從源屬性拷貝到目的屬性的觸發(fā)事件。當(dāng)源屬性變化時(shí),對(duì)象發(fā)出觸發(fā)事件。

Adobe Flex 提供三種方法用于指定Flex數(shù)據(jù)綁定:MXML 中的大括號(hào)({})語(yǔ)法,MXML 中的標(biāo)記,以及ActionScript 中的BindingUtils 的系列方法。

(1)下面的例子使用大括號(hào)({})語(yǔ)法來(lái)展示一個(gè)Text 控件,該控件的數(shù)據(jù)來(lái)自于TextInput 控件Text 屬性:

 
 
 

 Flex數(shù)據(jù)綁定表達(dá)式中可以將ActionScript 代碼以及E4X 表達(dá)式作為一部分包含進(jìn)來(lái),如下例所示:

 
 
 

 (2)用標(biāo)記作為大括號(hào)語(yǔ)法的替代方法。

在使用時(shí),要為標(biāo)記提供一個(gè)源屬性作為標(biāo)記的source 屬性以及提供一個(gè)目的屬性作為標(biāo)記的destination 屬性。下面的例子使用標(biāo)記定義了一個(gè)從TextInput 控件到Text 控件的Flex數(shù)據(jù)綁定:

 
 
 

 
同大括號(hào)語(yǔ)法相比,用標(biāo)記能夠?qū)⒁晥D(用戶(hù)界面)同模型完全分離。
標(biāo)記也能實(shí)現(xiàn)將多個(gè)源屬性綁定到一個(gè)相同的目的屬性,這是因?yàn)槟軌蚨x多個(gè)具有相同的destination 屬性的標(biāo)記.

大括號(hào)語(yǔ)法和標(biāo)記都能在編譯期定義Flex數(shù)據(jù)綁定,而使用ActionScript 代碼則可以在運(yùn)行期定義Flex數(shù)據(jù)綁定,如下例所示:

 
 
 
  1. import mx.binding.utils.*;
  2. // Define data binding.
  3. public function initBindingHandler():void {
  4. BindingUtils.bindProperty(myText, "text", myTI, "text");
  5. }
  6. ]]>

 (3)創(chuàng)建用作Flex數(shù)據(jù)綁定源的屬性

當(dāng)創(chuàng)建一個(gè)用于綁定表達(dá)式源的屬性,那么在源屬性值發(fā)生變化時(shí)Flex 就能自動(dòng)將值拷貝到所有的目的屬性。為了讓Flex 執(zhí)行拷貝,必須使用[Bindable]標(biāo)記來(lái)向Flex 注冊(cè)這個(gè)屬性。
The [Bindable] 元數(shù)據(jù)標(biāo)記有以下語(yǔ)法:

 
 
 
  1. [Bindable]
  2. [Bindable(event="eventname")]

如果忽略了事件名稱(chēng),F(xiàn)lex 自動(dòng)地創(chuàng)建一個(gè)名為propertyChange 的事件,并且在屬性發(fā)生變化時(shí),由Flex 發(fā)出這個(gè)事件以觸發(fā)所有以這個(gè)屬性作為源的Flex數(shù)據(jù)綁定。

下面的例子作了一個(gè)maxFontSize 屬性和一個(gè)minFontSize 屬性變量可用于Flex數(shù)據(jù)綁定表達(dá)式的源:

 
 
 
  1. // Define public vars for tracking font size.
  2. [Bindable]
  3. public var maxFontSize:Number = 15;
  4. [Bindable]
  5. public var minFontSize:Number = 5;
  6. ]]>

 2. 在ActionScript 中定義Flex數(shù)據(jù)綁定

通過(guò)使用mx.binding.utils.BindingUtils能夠在ActionScript中定義綁定。這個(gè)類(lèi)定義了幾個(gè)靜態(tài)方法,通過(guò)使用bindProperty() 方法可以讓我們創(chuàng)建一個(gè)到用變量實(shí)現(xiàn)的屬性的數(shù)據(jù)
綁定,或者用bindSetter()方法創(chuàng)建一個(gè)到用方法實(shí)現(xiàn)的屬性的Flex數(shù)據(jù)綁定。

(1)在MXML 與在ActionScript 定義Flex數(shù)據(jù)綁定的區(qū)別

編譯期在MXML 中定義Flex數(shù)據(jù)綁定與在運(yùn)行期在ActionScript 中定義Flex數(shù)據(jù)綁定有一些不同之處:
◆不能在由bindProperty()或者bindSetter()方法定義綁定表達(dá)式中引入ActionScript 代碼。相反,使用bindSetter()方法可以指定一個(gè)在綁定發(fā)生時(shí)調(diào)用的
方法。
◆ 不能在由ActionScript 中定義的綁定表達(dá)式中引入E4X 表達(dá)式。
◆ 在由the bindProperty()或者bindSetter()方法定義的Flex數(shù)據(jù)綁定表達(dá)式的屬性鏈中不能引入函數(shù)或者數(shù)組元素。更多信息見(jiàn)Working with bindable property chains.
◆同運(yùn)行時(shí)使用bindProperty()或者bindSetter()定義的Flex數(shù)據(jù)綁定相比,MXML 編譯器有更好的警告和錯(cuò)誤檢查支持。

(2)范例:在ActionScript 中定義Flex數(shù)據(jù)綁定

下面的例子是用bindSetter()建立了一個(gè)Flex數(shù)據(jù)綁定。bindSetter()方法的參數(shù)設(shè)置如下:
◆ 源(source) 對(duì)象
◆ 源(source) 屬性名
◆ 當(dāng)源(source)屬性變化被調(diào)用的方法。
下面的范例中,當(dāng)向TextInput 控件中輸入文本時(shí),文本會(huì)被轉(zhuǎn)換為大寫(xiě)形式并拷貝給TextArea
控件:

 
 
 
  1. import mx.binding.utils.*;
  2. import mx.events.FlexEvent;
  3. // Method called when myTI.text changes.
  4. public function updateMyString(val:String):void {
  5. myTA.text = val.toUpperCase();
  6. }
  7. public function mySetterBinding(event:FlexEvent):void {
  8. var watcherSetter:ChangeWatcher =
  9. BindingUtils.bindSetter(updateMyString, myTI, "text");
  10. }
  11. ]]>
  12. text="Hello Setter" />
  13. initialize="mySetterBinding(event);"/>

 
(3)定義綁定觀察者 (watchers)

Flex 有個(gè)mx.binding.utils.ChangeWatcher 類(lèi),可以用這個(gè)類(lèi)來(lái)定義一個(gè)Flex數(shù)據(jù)綁定觀察者。通常,F(xiàn)lex數(shù)據(jù)綁定觀察者在綁定發(fā)生時(shí)激活一個(gè)事件監(jiān)聽(tīng)器??砂凑障旅娴姆独褂?br /> ChangeWatcher 的watch()即可建立一個(gè)Flex數(shù)據(jù)綁定觀察者:

 
 
 
  1. initialize="initWatcher();">
  2. import mx.binding.utils.*;
  3. import mx.events.FlexEvent;
  4. import mx.events.PropertyChangeEvent;
  5. public var myWatcher:ChangeWatcher;
  6. // Define binding watcher.
  7. public function initWatcher():void {
  8. // Define a watcher for the text binding.
  9. ChangeWatcher.watch(textarea, "text", watcherListener);
  10. }
  11. // Event listener when binding occurs.
  12. public function watcherListener(event:Event):void {
  13. myTA1.text="binding occurred";
  14. // Use myWatcher.unwatch() to remove the watcher.
  15. }
  16. ]]>

上面的范例中,為Flex數(shù)據(jù)綁定觀察者定義了事件監(jiān)聽(tīng)器,在這個(gè)事件監(jiān)聽(tīng)器中使用了單個(gè)參數(shù)來(lái)包含事件對(duì)象。事件對(duì)象的數(shù)據(jù)類(lèi)型由被觀察的屬性所決定。每個(gè)可綁定的屬性會(huì)不同的
事件類(lèi)型以及相關(guān)的事件對(duì)象。有關(guān)確定事件類(lèi)型的更多信息見(jiàn)“使用Bindable 元數(shù)據(jù)標(biāo)記”。

 


網(wǎng)站欄目:術(shù)語(yǔ)匯編Flex數(shù)據(jù)綁定概述
分享網(wǎng)址:http://www.5511xx.com/article/dhhhscg.html