FLEX 資料繫結專題 1

2021-08-25 09:24:51 字數 1904 閱讀 2774

1.關於資料繫結

資料繫結是將乙個物件中的資料同另乙個物件中的資料聯絡在一起的過程。資料繫結為在

應用的不同層之間傳遞資料提供了便捷方法。資料繫結需要乙個源屬性,乙個目的屬性,以及

用於表明何時將資料從源屬性拷貝到目的屬性的觸發事件。當源屬性變化時,物件發出觸發事

件。adobe flex 提供三種方法用於指定資料繫結:mxml 中的大括號({})語法,mxml 中的

標記,以及actionscript 中的bindingutils 的系列方法。

(1)下面的例子使用大括號({})語法來展示乙個text 控制項,該控制項的資料來自於textinput 控制項text 屬性:

<?xml version="1.0"?>

資料繫結表示式中可以將actionscript **以及e4x 表示式作為一部分包含進來,如下例

所示:<?xml version="1.0"?>

(2)用標記作為大括號語法的替代方法。在使用時,要為

標記提供乙個源屬性作為標記的source 屬性以及提供乙個目的屬性作為標記的

destination 屬性。下面的例子使用標記定義了乙個從textinput 控制項到text 控

件的資料繫結:

<?xml version="1.0"?>

同大括號語法相比,用標記能夠將檢視(使用者介面)同模型完全分離。

標記也能實現將多個源屬性繫結到乙個相同的目的屬性,這是因為能夠定義多個

具有相同的destination 屬性的標記.

大括號語法和標記都能在編譯期定義資料繫結,而使用actionscript **則

可以在執行期定義資料繫結,如下例所示:

<?xml version="1.0"?>

import mx.binding.utils.*;

// define data binding.

public function initbindinghandler():void

]]>

(3)建立用作資料繫結源的屬性

當建立乙個用於繫結表示式源的屬性,那麼在源屬性值發生變化時flex 就能自動將值拷貝

到所有的目的屬性。為了讓flex 執行拷貝,必須使用[bindable]標記來向flex 註冊這個屬性。

the [bindable] 元資料標記有以下語法:

[bindable]

[bindable(event="eventname")]

如果忽略了事件名稱,flex 自動地建立乙個名為propertychange 的事件,並且在屬性發生

變化時,由flex 發出這個事件以觸發所有以這個屬性作為源的資料繫結。

下面的例子作了乙個maxfontsize 屬性和乙個minfontsize 屬性變數可用於資料繫結表示式的源:

<?xml version="1.0"?>

// define public vars for tracking font size.

[bindable]

public var maxfontsize:number = 15;

[bindable]

public var minfontsize:number = 5;

]]>

2. 在actionscript 中定義資料繫結

通過使用mx.binding.utils.bindingutils能夠在actionscript中定義繫結。這個類定義了

幾個靜態方法,通過使用bindproperty() 方法可以讓我們建立乙個到用變數實現的屬性的資料

繫結,或者用bindsetter()方法建立乙個到用方法實現的屬性的資料繫結。

(1)在mxml 與在actionscript 定義資料繫結的區別

編譯期在mxml 中定義資料繫結與在執行期在actionscript 中定義資料繫結有一些不同之

處:

Flex 資料繫結

package mxml private var sum int 0 bindable private var task task new task fx script bindable public function get sum int public function set sum valu...

Flex 資料繫結

package mxml private var sum int 0 bindable private var task task new task fx script bindable public function get sum int public function set sum valu...

flex 資料繫結

9.2.1 函式和類級別的繫結 bindable 標籤打使用 bindable public function set num n number void public function get num void 9.2.2 使用actionscript 來定義繫結 bindingutils 位於m...