成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

術(shù)語匯編 Flex數(shù)據(jù)綁定概述

開發(fā) 后端
你對(duì)Flex數(shù)據(jù)綁定的概念是否比較熟悉,這里向大家簡單介紹一下,它是將一個(gè)對(duì)象中的數(shù)據(jù)同另一個(gè)對(duì)象中的數(shù)據(jù)聯(lián)系在一起的過程。

本文和大家重點(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ā)事件。

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

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

Flex數(shù)據(jù)綁定是將一個(gè)對(duì)象中的數(shù)據(jù)同另一個(gè)對(duì)象中的數(shù)據(jù)聯(lián)系在一起的過程。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)({})語法,MXML 中的<mx:Binding>標(biāo)記,以及ActionScript 中的BindingUtils 的系列方法。

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

 

  1. <?xml version="1.0"?> 
  2. <!-- binding/BasicBinding.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:TextInput id="myTI" text="Enter text here"/> 
  5. <mx:Text id="myText" text="{myTI.text}"/> 
  6. </mx:Application> 
  7.  

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

  1. <?xml version="1.0"?> 
  2. <!-- binding/BasicBindingWithAS.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:TextInput id="myTI"/> 
  5. <mx:Text id="myText" text="{myTI.text.toUpperCase()}"/> 
  6. </mx:Application> 

 (2)用<mx:Binding>標(biāo)記作為大括號(hào)語法的替代方法。

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

  1. <?xml version="1.0"?> 
  2. <!-- binding/BasicBindingMXML.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:TextInput id="myTI"/> 
  5. <mx:Text id="myText"/> 
  6. <mx:Binding source="myTI.text" destination="myText.text"/> 
  7. </mx:Application> 
  8.  

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

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

  1. <?xml version="1.0"?> 
  2. <!-- binding/BasicBindingAS.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:Script> 
  5. <![CDATA[  
  6. import mx.binding.utils.*;  
  7. // Define data binding.  
  8. public function initBindingHandler():void {  
  9. BindingUtils.bindProperty(myText, "text", myTI, "text");  
  10. }  
  11. ]]> 
  12. </mx:Script> 
  13. <mx:TextInput id="myTI"/> 
  14. <mx:Text id="myText" preinitialize="initBindingHandler();"/> 
  15. </mx:Application> 
  16.  

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

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

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

如果忽略了事件名稱,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. <?xml version="1.0"?> 
  2. <!-- binding/FontPropertyBinding.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:Script> 
  5. <![CDATA[  
  6. // Define public vars for tracking font size.  
  7. [Bindable]  
  8. public var maxFontSize:Number = 15;  
  9. [Bindable]  
  10. public var minFontSize:Number = 5;  
  11. ]]> 
  12. </mx:Script> 
  13. <mx:Text text="{maxFontSize}"/> 
  14. <mx:Text text="{minFontSize}"/> 
  15. <mx:Button click="maxFontSize=20; minFontSize=10;"/> 
  16. </mx:Application> 
  17.  

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

通過使用mx.binding.utils.BindingUtils能夠在ActionScript中定義綁定。這個(gè)類定義了幾個(gè)靜態(tài)方法,通過使用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ù)組元素。更多信息見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)換為大寫形式并拷貝給TextArea
控件:
 

  1. <?xml version="1.0"?> 
  2. <!-- binding/BindSetterAS.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
  4. <mx:Script> 
  5. <![CDATA[  
  6. import mx.binding.utils.*;  
  7. import mx.events.FlexEvent;  
  8. // Method called when myTI.text changes.  
  9. public function updateMyString(val:String):void {  
  10. myTA.text = val.toUpperCase();  
  11. }  
  12. <!-- Event listener to configure binding. -->  
  13. public function mySetterBinding(event:FlexEvent):void {  
  14. var watcherSetter:ChangeWatcher =  
  15. BindingUtils.bindSetter(updateMyString, myTI, "text");  
  16. }  
  17. ]]> 
  18. </mx:Script> 
  19. <mx:Label text="Bind Setter using setter method"/> 
  20. <mx:TextInput id="myTI" 
  21. text="Hello Setter" /> 
  22. <mx:TextArea id="myTA" 
  23. initialize="mySetterBinding(event);"/> 
  24. </mx:Application> 

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

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

  1. <?xml version="1.0"?> 
  2. <!-- binding/DetectWatcher.mxml --> 
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  4. initialize="initWatcher();"> 
  5. <mx:Script> 
  6. <![CDATA[  
  7. import mx.binding.utils.*;  
  8. import mx.events.FlexEvent;  
  9. import mx.events.PropertyChangeEvent;  
  10. public var myWatcher:ChangeWatcher;  
  11. // Define binding watcher.  
  12. public function initWatcher():void {  
  13. // Define a watcher for the text binding.  
  14. ChangeWatcher.watch(textarea, "text", watcherListener);  
  15. }  
  16. // Event listener when binding occurs.  
  17. public function watcherListener(event:Event):void {  
  18. myTA1.text="binding occurred";  
  19. // Use myWatcher.unwatch() to remove the watcher.  
  20. }  
  21. ]]> 
  22. </mx:Script> 
  23. <!-- Define a binding expression_r to watch. --> 
  24. <mx:TextInput id="textinput" text="Hello"/> 
  25. <mx:TextArea id="textarea" text="{textinput.text}"/> 
  26. <!-- Trigger a binding. --> 
  27. <mx:Button label="Submit" click="textinput.text='Goodbye';"/> 
  28. <mx:TextArea id="myTA1"/> 
  29. </mx:Application> 

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

【編輯推薦】

  1. 學(xué)習(xí)筆記 如何使變量進(jìn)行Flex數(shù)據(jù)綁定
  2. Flex數(shù)據(jù)綁定簡單技巧
  3. 解析三大Flex數(shù)據(jù)綁定方式
  4. 解析Flex全屏模式設(shè)置方法
  5. Flex內(nèi)存泄露解決方法和內(nèi)存釋放優(yōu)化原則

 
 

 

責(zé)任編輯:佚名 來源: hi.baidu.com
相關(guān)推薦

2010-08-05 14:51:36

AdobeFlex

2010-08-10 10:32:02

Flex語言

2010-07-13 10:21:19

2010-07-19 16:56:56

Perl線程

2010-09-13 13:27:25

CSS濾鏡

2010-07-28 15:21:01

Flex函數(shù)

2010-09-16 14:29:08

Java虛擬機(jī)

2010-06-07 13:02:46

Hadoop簡介

2010-09-17 09:19:08

Java API

2010-06-10 18:27:00

UML語言

2010-07-26 16:54:15

Perl引用

2010-07-27 08:59:19

FlexBuilder

2010-06-11 09:33:47

UML順序圖

2010-06-29 15:06:14

UML建模

2010-09-26 17:04:48

JVMJava虛擬機(jī)

2010-06-11 18:27:39

UML對(duì)象圖

2010-07-08 09:50:11

UML構(gòu)件圖

2010-07-13 09:02:16

Perl

2010-06-02 14:28:23

SVN版本控制

2010-06-08 17:18:50

UML建模技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费精品一区 | 国产精品日韩欧美 | 亚洲超碰在线观看 | 国产精品三级久久久久久电影 | 久草免费在线视频 | 免费观看黄a一级视频 | 欧美黄色片在线观看 | 国产91亚洲精品一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 中国一级特黄真人毛片 | 午夜丰满少妇一级毛片 | 国产精品一区二区三区在线 | 午夜免费网站 | 色资源在线视频 | 午夜精品网站 | 欧美一区二区视频 | 亚洲成人av | 丁香久久 | 国产精品爱久久久久久久 | 久久天天躁狠狠躁夜夜躁2014 | 黑人精品欧美一区二区蜜桃 | 日韩免费av | 国产伦精品一区二区三区四区视频 | 亚洲一区二区三区桃乃木香奈 | 亚洲精品乱码久久久久久9色 | 亚洲天堂一区二区 | 日韩精品中文字幕一区二区三区 | 亚洲一区二区久久久 | 激情亚洲| 伊人焦久影院 | 天天操夜夜艹 | 在线观看电影av | 日韩一区二区免费视频 | 日本在线视频一区二区 | 久久国产精品一区二区三区 | 国产视频第一页 | 国产美女特级嫩嫩嫩bbb片 | 国产色婷婷精品综合在线播放 | 欧美一级免费黄色片 | 黄色免费网站在线看 | 欧美一区二区三区的 |