您的位置:首页 > 其它

Flex 3 组件与数据间的双向绑定

2009-04-19 23:56 288 查看
最近才开始学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;
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: