您好,登錄后才能下訂單哦!
Flex中怎么實現數據綁定,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
首先來看一下這個例子最終完成的Demo演示:
下面來看看是如何實現這套機制的,首先我們來創建一個可綁定的數據類,并實現對綁定對象的數據更新,注意主要是要用bind和unlock兩個方法來實現對Flex數據綁定和解除綁定:
package{ publicclassBindableObject { publicvarbindProperty:*; publicfunctionBindableObject(value:*=null):void{ bindProperty=value; } publicfunctionsetproperty(p:*):void{ bindProperty=p; BindManager.refresh(this); } publicfunctiongetproperty():*{ returnbindProperty; } publicfunctionbind(obj:*,property:String):void{ BindManager.registBindableObject(obj,property,this); } publicfunctionunlock(obj:*,property:String):void{ BindManager.unlockBindableObject(obj,property,this); } } }
其中對綁定的數據更新要依賴一個manager類來實現,參見下面的代碼:
package{ importflash.utils.Dictionary; publicclassBindManager { publicstaticvarvalueDic:Dictionary=newDictionary(); publicstaticfunctionregistBindableObject(obj:*,property:String,value:BindableObject):void{ if(value.property!=null)obj[property]=value.property; if(valueDic[value]==null){ valueDic[value]=[]; } valueDic[value].push(newInnerBindableObject(obj,property)); } publicstaticfunctionunlockBindableObject(obj:*,property:String,value:BindableObject):void{ if(value!=null){ varneedCheckObjs:Array=valueDic[value]; foreach(varitem:InnerBindableObjectinneedCheckObjs){ if(obj==item.obj&&property==item.property){ varindex:int=needCheckObjs.indexOf(item); if(index!=-1)needCheckObjs.splice(index,1); } } } } publicstaticfunctionrefresh(value:BindableObject=null):void{ if(value!=null){ varneedRefObjs:Array=valueDic[value]; foreach(varitem:InnerBindableObjectinneedRefObjs){ if(item.obj!=null){ item.obj[item.property]=value.property; } } } } }} classInnerBindableObject{ publicfunctionInnerBindableObject(o:*,p:String):void{ oobj=o; pproperty=p; } publicvarobj:*; publicvarproperty:String; }
使用方法:
1.首先創建一個BindableObject
2.調取它的bind方法,綁定到要更新的對象,比如:bindExpObj.bind(main.txt1,"text");
3.在需要的時候,對數據源更新,比如:bindExpObj.property=main.stringSRC.text;
4.解除Flex數據綁定,使用unlock方法,參數與bind相同,比如:bindExpObj.unlock(main.txt1,"text");
關于Flex中怎么實現數據綁定問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。