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完成,不用我們手動干預。繫結的前提條件 源物件的資料和目標物件的資料格式相同。實...