Flex 三 组件与数据间的双向绑定
Flex 3 组件与数据间的双向绑定
最近才开始学Flex,感觉还真是一个很不错的东西!
关于数据与组件之间的绑定,自己研究了几天,外加其他几位大大的分享,才有所建树,至少是现在做的项目可以完成了。记录在这里,免得以后忘记了,也给初学者分享一下!
MyTest.xmxl
MyPanel.as
最近才开始学Flex,感觉还真是一个很不错的东西!
关于数据与组件之间的绑定,自己研究了几天,外加其他几位大大的分享,才有所建树,至少是现在做的项目可以完成了。记录在这里,免得以后忘记了,也给初学者分享一下!
MyTest.xmxl
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" styleName="panelControlBar" creationComplete="init()" xmlns:my="my.*" xmlns:ns1="*"> <mx:Panel x="10" y="10" width="546" height="489" layout="absolute"> <mx:TileList x="10" y="10" width="438" height="429" rowCount="5" columnCount="5" id="tile_list" dataProvider="{arrayCon}"> <mx:itemRenderer> <mx:Component> <my:MyPanel title="{data.title}" creationComplete="BindingUtils.bindProperty(data, 'good', this, 'good'); BindingUtils.bindProperty(data,'title',this,'title');"> <mx:Script> <![CDATA[ import mx.binding.utils.BindingUtils; ]]> </mx:Script> </my:MyPanel> </mx:Component> </mx:itemRenderer> </mx:TileList> </mx:Panel> <mx:Button x="10" y="510" label="show ArrayCollection" click="onClick()"/> <mx:Script> <![CDATA[ import mx.utils.ObjectProxy; import mx.controls.Alert; import mx.binding.utils.BindingUtils; import my.MyPanel; import mx.containers.Panel; import mx.controls.Button; import mx.collections.ArrayCollection; [Bindable] private var arrayCon:ArrayCollection=new ArrayCollection(); private function init():void { for(var i:Number=0;i<9;i++) { var op:ObjectProxy=new ObjectProxy(); op.title="Title"; op.good="123"; this.arrayCon.addItem(op); } } private function onClick():void { var str:String = ""; for (var i:int = 0; i < arrayCon.length; i++) { var o:ObjectProxy=arrayCon.getItemAt(i) as ObjectProxy; str += o.title + " "+o.good+" "; } mx.controls.Alert.show(str); } ]]> </mx:Script> </mx:Application>
MyPanel.as
package my { import flash.events.Event; import flash.events.MouseEvent; import mx.binding.utils.BindingUtils; import mx.containers.Panel; import mx.controls.Label; public class MyPanel extends Panel { private var _str:String="111"; public function MyPanel() { super(); var label:Label=new Label(); label.text=_str; BindingUtils.bindProperty(label,"text",this,"good"); this.addChild(label); this.addEventListener(MouseEvent.CLICK,changeTitle); } private function changeTitle(evt:MouseEvent):void{ this.title="good"; this.good="study"; } public function set good(str:String):void{//需要绑定的自定义属性 _str=str; dispatchEvent(new Event("changeNIMAIPI")); } [Bindable(event="changeNIMAIPI")] public function get good():String{ return _str; } } }