flex 資料繫結

2021-08-30 03:54:07 字數 2766 閱讀 2500

9.2.1 函式和類級別的繫結

[bindable]標籤打使用:

[bindable]

public function set num(n:number):void

public function get num():void

9.2.2 使用actionscript 來定義繫結

bindingutils 位於mx.binding.utils 包中:

site:object,  表示目標物件

prop:string,  目標物件的公有屬性名,當值發生變化時,派發繫結事件

host:object,   資料來源物件

chain:object,  資料來源物件被繫結的屬性名,或通過getter定義的函式名

commitonly:boolean=false  預設false,表示要發生值的到改變時就會引發繫結行為。true:表示對物件有寫操作時仍然會派發事件,但不會激發繫結行為,只有確認了改變的資料,並派發事件valuecommit 後,繫結動作才開始執行。 )

setter:function,  函式,用來改變資料來源物件的值,可以直接在**中宣告乙個函式體

host:object,  資料來源物件

chain:object,  資料來源物件被繫結的屬性名,或通過getter定義的函式名

commitonly:boolean=false  預設false。同上。 )

changewatcher 物件 位於mx.binding.utils 包中,偵聽繫結的動作:

var cw:changewatcher = changewatcher.watch(tip_txt, "text", handler);

cw.unwatch(); //停止監聽

watch(

host:object,  資料來源物件

chain:object,  資料來源物件被繫結的屬性名,或通過get定義的函式

handler:function,  監聽函式

commitonly:boolean=false  預設false,表示只要發生值的改變時就會引發繫結行為,同上 )

9.2.3 資料繫結中的特例

在繫結中出現問題,一般有以下情況:

object 型別作為所有型別的父類,它不完全支援資料繫結。

object 型別屬於動態型別,可以隨意的向裡面新增任何屬性,而且屬性的型別也是任意的。

如果要對object型別繫結,必須使用 mx.utils 包中的 objectproxy 物件:

[bindable]

internal var info:object;

//定義info 的屬性值

info = new objectproxy();

info.label = "label";

bindingutils.bindproperty(tip_txt, "text", info, "label"); //設定繫結 }

proxy 是**的意思,objectproxy 就相當於 object 的**人,提供了資料繫結的介面,任何屬性發生變化時,都會派發事件。

arraycollection 是增強性的 array,依然是用陣列來儲存資料,但支援多種排序、屬性繫結等,適合用來處理複雜資料。

setitemat(item:object, index:int);  //將元素插入到陣列指定的位置,如果存在則替換

陣列型別的物件,其子元素是無法作為資料來源繫結的。

在as中定義乙個陣列,型別是arraycollection,當乙個乙個被push後,發現出現很多警告

警告資訊:

warning: unable to bind to property 'nyr' on class 'object' (class is not an ieventdispatcher)

warning: unable to bind to property 'num_date' on class 'object' (class is not an ieventdispatcher)

該如何避免此問題?

bindable]  

internal var info:object;  

//定義info 的屬性值  

info = new objectproxy();  

info.label = "label";  

bindingutils.bindproperty(tip_txt, "text", info, "label"); //設定繫結  

}  [bindable]

internal var info:object;

//定義info 的屬性值

info = new objectproxy();

info.label = "label";

bindingutils.bindproperty(tip_txt, "text", info, "label"); //設定繫結 }

proxy 是**的意思,objectproxy 就相當於 object 的**人,提供了資料繫結的介面,任何屬性發生變化時,都會派發事件。

arraycollection 是增強性的 array,依然是用陣列來儲存資料,但支援多種排序、屬性繫結等,適合用來處理複雜資料。

setitemat(item:object, index:int);  //將元素插入到陣列指定的位置,如果存在則替換

陣列型別的物件,其子元素是無法作為資料來源繫結的。

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資料繫結

資料繫結實際也是借助事件機制來完成的,當目標使用了資料繫結的時候,目標物件就會監聽資料來源物件的某一固定事件。當資料來源發生變化時,資料來源會派發改變事件 changeevent 通知目標物件更新資料。這個過程由flex完成,不用我們手動干預。繫結的前提條件 源物件的資料和目標物件的資料格式相同。實...