- 浏览: 548977 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
【转载】CSS圆角按钮(一) -
saiarmuluo:
不错,支持。
java log4j日志 写入数据库 -
springdata_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Freemarker 使用 -
zlbdexiaohao:
棒棒的
flex ToolTip汇总 -
hw_128:
demo的代码的,能不能发一下,谢谢 qq257515270 ...
java log4j日志 写入数据库
数据绑定发生的时机
1.当源数据属性已经改变,数据绑定源发出一个事件,这个事件可以在应用执行的任何时候发出,这个事件会触发
Flex将源属性的值复制到目的属性中
2.在应用启动过程中,当源对象发出initialize事件时,所有数据绑定都一次性的被触发以初始化
目的属性,如果源属性是只读的或者静态的常量,那么就只有这一次机会会自动执行这个数据绑定
3.通过程序控制绑定,UIComponent类的executeBindings()方法可以让Flex执行以UIComponents为目的
上的所有绑定,所有容器和控件,以及Repeater组件都是从UICompoent类继承的,Container类和REpeater类的
executeChildBindings()方法可以让自己及其所有子对象上的所有绑定执行,所有容器都是从Container类继承
只有在确保绑定没有自动发生时才能使用executeBindings()方法
[Bindable]元数据标签通过三种方式:
1.在类中定义使用
package com.demo
{
import flash.events.EventDispatcher;
[Bindable]
public class DataObject extends EventDispatcher{
}
}
2.在字段中使用
[Bindable] private var _lastName:String;
3.在方法中使用
4.字段set 监听 绑定自定义事件
4.双向绑定
5.使用 BindingUtils 绑定 定义绑定观察者 (watchers)
5.1 使用@ 符号绑定数据
6.获取xml中相关数据
-- 绑定一个Object对象 当然这个类只要继承 Object
7.动态绑定 extends Proxy implements IEventDispatcher
8.绑定数组
9.绑定Model
使用[Bindable元数据标记]
1.在public 类中定义之前使用
在这个地方使用[Bindable]使得类中定义的全部public变量以及同时具有的set get方法
的public 属性能成为数据绑定表达式的源,在这中情况下,[Bindable]不使用任何参数
[Bindable]
public class MyDemo{}
在public class 之前使用[Bindable]只是将绑定作用与public属性,它不会作用与private 和
protected属性以及那些定义其他namespace中的属性,必须在非public属性前插入[Bindable]
标记才能成为数据绑定的源。
2.在public,protected 或者private 属性之前使用
在public,protected或者private属性之前使用[Bindable]可以将这个特定的属性定义为支持数据绑定的
例如:
[Bindable]
private var demo:String;
[Bindable (event="nameChanged")]
public var name:String ;
flex编译器自动为那个属性名产生 propertyChange,类型瓦尔PropertyChangeEvent的事件
如果写入的属性不变,那么flex不会发出事件或者更新属性。
3.在由get set 方法所有定义public ,private 或protected属性之前使用
在这种情况下使用 [Bindable]必须同时为属性定义get set 方法,如果只有一个set 方法,那么就创建了一个只写的属性,这个的属性不能
作为数据源绑定,如果只定义了一个set 方法那么就创建了一个只读的属性,把只读属性当作数据源绑定而不是用
[Bindable]标记,就相当于使用了一个const关键字定义的变量来作为数据绑定的源;这样的属性只能在引用启动时触发绑定一次,以后就不会在触发
[Bindable]
public function set demo(value:String):void
{
this.demo=value;
}
4.关于绑属性事件的方法
[Bindable(event="changeName")]
public function set name(value:String):void
{
//创建并分发事件
dispatchEvent(new Event("changeName"));
}
public function get name():String
{
}
1.当源数据属性已经改变,数据绑定源发出一个事件,这个事件可以在应用执行的任何时候发出,这个事件会触发
Flex将源属性的值复制到目的属性中
2.在应用启动过程中,当源对象发出initialize事件时,所有数据绑定都一次性的被触发以初始化
目的属性,如果源属性是只读的或者静态的常量,那么就只有这一次机会会自动执行这个数据绑定
3.通过程序控制绑定,UIComponent类的executeBindings()方法可以让Flex执行以UIComponents为目的
上的所有绑定,所有容器和控件,以及Repeater组件都是从UICompoent类继承的,Container类和REpeater类的
executeChildBindings()方法可以让自己及其所有子对象上的所有绑定执行,所有容器都是从Container类继承
只有在确保绑定没有自动发生时才能使用executeBindings()方法
[Bindable]元数据标签通过三种方式:
1.在类中定义使用
package com.demo
{
import flash.events.EventDispatcher;
[Bindable]
public class DataObject extends EventDispatcher{
}
}
2.在字段中使用
[Bindable] private var _lastName:String;
3.在方法中使用
<fx:Declarations> <mx:CurrencyFormatter id="formatter" precision="2" /> </fx:Declarations> <s:RichText text="{formatter.format( amtInput.text )}" />
4.字段set 监听 绑定自定义事件
<fx:Declarations> <s:ArrayCollection id="fruitCollection"> <fx:String>Apple</fx:String> <fx:String>Banana</fx:String> <fx:String>Orange</fx:String> </s:ArrayCollection> </fx:Declarations> <fx:Script> <![CDATA[ private var _selectedFruit:String; [Bindable(event="Demo")] private function isOrangeChosen():Boolean { return _selectedFruit == "Orange"; } public function get selectedFruit():String { return _selectedFruit; } public function set selectedFruit( value:String ):void { _selectedFruit = value; dispatchEvent( new Event( "Demo" ) ); } ]]> </fx:Script> <s:layout> <s:VerticalLayout /> </s:layout> <s:Label text="Select a Fruit:" /> <s:HGroup> <s:DropDownList id="fruitCB" dataProvider="{fruitCollection}" change="{selectedFruit = fruitCB.selectedItem}" /> <s:Button label="eat the orange." enabled="{isOrangeChosen()}" /> </s:HGroup>
4.双向绑定
<s:VGroup> <s:Label text="From Input 2:" /> <s:TextInput id="input1" text="{input2.text}" /> <s:Label text="From Input 1:" /> <s:TextInput id="input2" text="{input1.text}" /> </s:VGroup>
<s:VGroup> <s:Label text="From Input 2:" /> <s:TextInput id="input1" text="@{input2.text}" /> <s:Label text="From Input 1:" /> <s:TextInput id="input2" /> </s:VGroup>
<fx:Binding source="input1.text" destination="input2.text" twoWay="true" /> <!-- source 源属性 -- destination 目标属性 --> <s:VGroup> <s:Label text="From Input 2:" /> <s:TextInput id="input1" /> <s:Label text="From Input 1:" /> <s:TextInput id="input2" /> </s:VGroup>
5.使用 BindingUtils 绑定 定义绑定观察者 (watchers)
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="handleCreationComplete();"> <fx:Script> <![CDATA[ import mx.binding.utils.BindingUtils; import mx.binding.utils.ChangeWatcher; private var nameWatcher:ChangeWatcher; private function handleCreationComplete():void { nameWatcher = BindingUtils.bindProperty( nameField, "text", nameInput, "text" ); } private function handleClick():void { if( nameWatcher.isWatching() ) { nameWatcher.unwatch(); btn.label = "watch"; } else { nameWatcher.reset( nameInput ); btn.label = "unwatch"; } } ]]> </fx:Script> <s:Panel title="User Entry."> <s:layout> <s:VerticalLayout paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" /> </s:layout> <s:HGroup verticalAlign="bottom"> <s:Label text="Name:" /> <s:TextInput id="nameInput" /> </s:HGroup> <s:HGroup verticalAlign="bottom"> <s:Label text="You Entered:" /> <s:RichText id="nameField" /> </s:HGroup> <s:Button id="btn" label="unwatch" click="handleClick();" /> </s:Panel> </s:Application> <fx:Binding source="textInput1.text" destination="textInput2.text" twoWay="false" />
5.1 使用@ 符号绑定数据
<s:TextInput id="textInput2" text="@{text}" />
6.获取xml中相关数据
<mx:Binding source="myTI.text" destination="myText.text"/> <fx:XML id="itemData" xmlns=""> <fx:Binding source="{itemData..item.(@id == '1').name} {itemData..item.(@id == '1').description.toLowerCase()}" destination="lab.text" />
-- 绑定一个Object对象 当然这个类只要继承 Object
private var obj:Object = {name:'Tom Waits', album:'Rain Dogs', genre:'Rock'}; [Bindable] private var proxy:ObjectProxy = new ObjectProxy( obj ); private function handleClick():void { proxy.name = nameField.text; proxy.album = albumField.text; proxy.genre = genreField.text; }
package com { [Bindable] public class BindableObject extends Object { public var stringProp:String = "String property"; public var intProp:int = 52; public function BindableObject() { super(); } } }
<fx:Declarations> <fx:Script> <![CDATA[ import com.BindableObject; [Bindable] public var myObj:BindableObject = new BindableObject(); [Bindable] public var anotherObj:BindableObject =new BindableObject(); public function initObj():void { anotherObj.stringProp = 'anotherObject'; anotherObj.intProp = 8; } ]]> </fx:Script> </fx:Declarations> <mx:Text id="text1" text="{myObj.stringProp}"/> <mx:Text id="text2" text="{myObj.intProp}"/> <mx:Button label="Change myObj" click="myObj = anotherObj;"/>
7.动态绑定 extends Proxy implements IEventDispatcher
package com { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IEventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.Proxy; import flash.utils.flash_proxy; import mx.events.PropertyChangeEvent; [Bindable(event="propertyChange")] dynamic public class Properties extends Proxy implements IEventDispatcher { private var _evtDispatcher:EventDispatcher; private var _data:XML; public function Properties( source:XML ) { _evtDispatcher = new EventDispatcher(); data = source; } public function get data():XML { return _data; } public function set data( xml:XML ):void { _data = xml; } // use E4X to return property value held on XML override flash_proxy function getProperty( name:* ):* { if( _data == null ) return ""; var attributeValue:String = QName( name ).toString(); var value:* = _data..property.(@id == attributeValue ); return value; } // use E4X to modify property value on XML, and dispatch 'propertyChange' override flash_proxy function setProperty( name:*, value:* ):void { var attributeValue:String = QName( name ).toString(); var oldVal:String = _data..property.(@id == attributeValue ); var index:Number = _data..property.(@id == attributeValue ). childIndex(); _data.replace( index, <property id={name}>{value}</property> ); var evt:Event = PropertyChangeEvent.createUpdateEvent( this, name, oldVal, value ); dispatchEvent( evt ); } // IEventDispatcher implementation public function addEventListener( type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { _evtDispatcher.addEventListener( type, listener, useCapture, priority, useWeakReference ); } // IEventDispatcher implementation public function removeEventListener( type:String, listener:Function, useCapture:Boolean = false ):void { _evtDispatcher.removeEventListener( type, listener, useCapture ); } // IEventDispatcher implementation public function dispatchEvent( evt:Event ):Boolean { return _evtDispatcher.dispatchEvent( evt ); } // IEventDispatcher implementation public function hasEventListener( type:String ):Boolean { return _evtDispatcher.hasEventListener( type ); } // IEventDispatcher implementation public function willTrigger( type:String ):Boolean { return _evtDispatcher.willTrigger( type ); } } }
<fx:Declarations> <fx:XML id="propertiesData" source="assets/properties.xml" /> <!-- 这个xml资源可以是一个url --> <!-- 基本格式如下 <fx:XML id="propertiesData" xmlns=""> <properties> <property id="name">Tom Waits</property> <property id="album">Rain Dogs</property> <property id="genre">Rock</property> </properties> </fx:XML> --> </fx:Declarations> <fx:Script> <![CDATA[ import com.Properties; import mx.binding.utils.BindingUtils; private var properties:com.Properties; private function handleCreationComplete():void { properties = new Properties( propertiesData ); establishBindings(); } private function establishBindings():void { BindingUtils.bindProperty( nameOutput, "text", properties, "name" ); BindingUtils.bindProperty( albumOutput, "text", properties, "album" ); BindingUtils.bindProperty( genreOutput, "text", properties, "genre" ); } private function handleSubmit():void { properties.name = nameInput.text; properties.album = albumInput.text; properties.genre = genreInput.text; } ]]> </fx:Script> <s:Button label="ok" click="handleSubmit();" />
8.绑定数组
<fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var myAC:ArrayCollection = new ArrayCollection(["One", "Two", "Three", "Four"]); [Bindable] public var myAC2:ArrayCollection = new ArrayCollection(["Uno", "Dos", "Tres", "Quatro"]); ]]> </fx:Script> </fx:Declarations> <mx:Text id="text1" text="{myAC[0]}"/> <mx:Text id="text2" text="{myAC.getItemAt(0)}"/>
9.绑定Model
<mx:String id="areaCode">707</mx:String> <mx:Model id="model"> <info> <name> <firstName>Tim</firstName> <lastName>O'Reilly</lastName> </name> <email>tim@oreilly.com</email> <phone>{areaCode}827-7000</phone> </info> </mx:Model> <mx:Binding source="model.phone" destination="nameLabel.text"/> <mx:Label id="nameLabel"/>
使用[Bindable元数据标记]
1.在public 类中定义之前使用
在这个地方使用[Bindable]使得类中定义的全部public变量以及同时具有的set get方法
的public 属性能成为数据绑定表达式的源,在这中情况下,[Bindable]不使用任何参数
[Bindable]
public class MyDemo{}
在public class 之前使用[Bindable]只是将绑定作用与public属性,它不会作用与private 和
protected属性以及那些定义其他namespace中的属性,必须在非public属性前插入[Bindable]
标记才能成为数据绑定的源。
2.在public,protected 或者private 属性之前使用
在public,protected或者private属性之前使用[Bindable]可以将这个特定的属性定义为支持数据绑定的
例如:
[Bindable]
private var demo:String;
[Bindable (event="nameChanged")]
public var name:String ;
flex编译器自动为那个属性名产生 propertyChange,类型瓦尔PropertyChangeEvent的事件
如果写入的属性不变,那么flex不会发出事件或者更新属性。
3.在由get set 方法所有定义public ,private 或protected属性之前使用
在这种情况下使用 [Bindable]必须同时为属性定义get set 方法,如果只有一个set 方法,那么就创建了一个只写的属性,这个的属性不能
作为数据源绑定,如果只定义了一个set 方法那么就创建了一个只读的属性,把只读属性当作数据源绑定而不是用
[Bindable]标记,就相当于使用了一个const关键字定义的变量来作为数据绑定的源;这样的属性只能在引用启动时触发绑定一次,以后就不会在触发
[Bindable]
public function set demo(value:String):void
{
this.demo=value;
}
4.关于绑属性事件的方法
[Bindable(event="changeName")]
public function set name(value:String):void
{
//创建并分发事件
dispatchEvent(new Event("changeName"));
}
public function get name():String
{
}
发表评论
-
Flex4 模块 [转载]
2012-11-05 09:30 0使用flex4模块(1):传递数据到模块 在主程序与模块 ... -
Flex4 List改变了dataProvider,怎么锁定选中Item【转载】
2012-11-05 09:29 1096sfList.dataProvider = sfData; i ... -
解决flex嵌入字体导致文件过大的问题[转载]
2012-11-05 09:25 0众所周知,Flex嵌入字体 ... -
flex DataGrid 行列颜色设置
2012-05-06 20:00 9143群里一哥们问了个问题,就写了个这个demo DataGrid ... -
flex4 Spark DataGrid,title的字体居中
2012-03-20 21:23 6273【原创】flex4 Spark DataGrid,title的 ... -
flex4 Application backgroundImage
2012-03-10 15:13 2889群里一哥们问我 f4 设置 Application 的 bac ... -
flex 无法将“<mx:>”解析为组件执行.解决办法:
2012-03-09 16:34 8294flex项目导入早期版本 无法将“<mx:******& ... -
flex component 去掉点击加亮边框
2012-03-09 16:35 1090群里有人问我怎么去掉TextInput的文本框加亮。写下来 ... -
flex ProgressBar skin 修改
2012-03-09 16:36 2949f3的形式修改border: 其中 barSkin 是外边框 ... -
flex Draggable Flex Components
2012-03-08 20:38 997Creating Resizable and Draggabl ... -
flex 3d云标签
2012-03-08 20:37 1592来自:http://downloads.wordpress.o ... -
AS html 形式超链接设置
2012-03-08 20:36 1647lbl.htmlText = " <b& ... -
flex IViewCursor 的应用
2012-03-08 20:35 1094IViewCursor 的应用 demo 效果图:可以上下 ... -
f4 spark 占位控件
2012-03-08 20:33 979halo的占位控件。<mx:Spacer width=& ... -
halo的grid DataGridColumn itemRenderer 混用 spark 组件
2012-03-03 14:20 1411halo的grid DataGridColumn itemRe ... -
flex DeferredInstanceFromFunction 使用
2012-03-02 21:54 1585flex DeferredInstanceFromFuncti ... -
flex ContextMenuItem 根据状态隐藏选项
2012-02-27 18:28 1386因群里一个群员的要求,写了这个demo,代码粗糙,根据一个控件 ... -
动态设置itemRenderer
2012-02-18 19:34 0<mx:TileList id="tl&quo ... -
【转】解决RemoteClass alias信息丢失
2012-02-18 19:15 794问题发生场景:flex程序中存在多个module都调用一个标记 ... -
flex tree icon
2012-02-14 19:53 33231.tree 改变每一项的 icon图标 <?xml ...
相关推荐
Flex Data Binding是Adobe Flex框架中的核心特性之一,它允许开发者创建数据驱动的应用程序,通过将UI组件的属性与数据模型的属性直接关联,实现实时的数据同步。在Flex中,数据绑定确保当数据源发生变化时,相关的...
5. **Flex Data Binding**:Flex支持数据绑定,允许UI组件的状态与后台数据模型自动同步。这种特性简化了UI与数据间的交互,源码中可能会有相关的实现示例。 6. **Event Handling**:在Flex应用中,事件处理是关键...
5. **Data Binding** - Flex支持数据绑定,可以自动同步UI组件和模型数据。 6. **Event Handling** - 处理用户交互和组件间的通信。 7. **Services and Remoting** - 通过AMF(Action Message Format)调用远程服务...
7. **Data Binding(数据绑定)**:Flex 4的数据绑定机制允许属性之间的自动同步,简化了数据驱动组件的开发。开发者可以通过数据绑定将UI组件与后台数据源关联起来。 8. **Integration with other Adobe ...
6. **Services and Data Binding**: Flex API支持与服务器端的数据交互,如WebService、AMF(Action Message Format)或Remote Object服务。数据绑定机制使得视图组件可以直接与数据源关联,实现数据的自动更新。 7...
4. **Data Binding**:Flex4支持数据绑定,允许UI元素与数据模型直接关联,当数据模型改变时,UI会自动更新,反之亦然。这对于实现动态、响应式的用户界面非常有用。 5. **States and Effects**:Flex4引入了状态...
5. **Data Binding**: 数据绑定是Flex的一个关键特性,它自动将视图组件的状态与应用程序数据模型关联起来。这意味着当数据模型发生变化时,相关的界面元素会自动更新,反之亦然。 6. **Services and Remoting**: ...
5. **Data Binding**:数据绑定是 Flex 4 中的核心特性,它允许视图和模型之间的双向通信,使得数据的改变能实时反映到界面上。 6. ** States 和 Layouts**:Flex 4 改进了状态管理和布局管理,开发者可以更精确地...
6. **Data Binding**:Flex 4.0的数据绑定机制更加灵活,支持双向数据绑定,使得视图和模型之间的数据同步更加自动化。 7. **BlazeDS集成**:BlazeDS是Flex与Java服务器通信的中间件,Flex 4.0中对BlazeDS的支持...
6. **Data Binding**:Flex支持数据绑定,使得UI组件的属性能够自动与应用程序数据模型同步,简化了数据驱动UI的开发。 7. **Flex Compiler**:编译器将MXML和ActionScript代码转换为SWF文件,这个文件可以在Web...
在Flex 3图表的高级开发中,还需要了解其核心思想,即数据绑定(Data Binding)。数据绑定机制允许开发者将数据源直接绑定到用户界面组件上,从而实现数据的动态展示。通过ActionScript 3提供的事件处理机制,图表...
5. **Data Binding**:Flex 3支持数据绑定,能实现UI元素与应用程序数据之间的自动同步,简化了数据驱动应用的开发。 6. **Services and Remoting**:Flex 3提供了与服务器进行数据交换的机制,如AMF(Action ...
6. **Data Binding**:Flex支持数据绑定,这意味着视图组件的状态可以自动与模型数据同步,简化了开发过程。 7. ** skins和styles**:Flex应用可以通过皮肤和样式表定制UI外观。源码中可能包含自定义的皮肤文件和...
6. **Data Binding**: Flex支持数据绑定,使得UI组件的状态可以直接与数据模型关联,简化了代码并提高了可维护性。 7. **Services and Data Access**: Flex可以与各种后端服务进行通信,如AMF、SOAP、REST等,同时...
4. **Data Binding**:Flex支持双向数据绑定,可以自动保持UI元素和后台数据模型的一致性。 5. **Services and Remoting**:Flex允许你轻松地与服务器端数据交互,如使用AMF(Action Message Format)进行远程调用...
- Data Binding:数据绑定允许将组件属性与应用程序数据模型关联起来,实现数据的实时更新。 五、Flex开发流程 1. 创建新项目:在Flex Builder或Adobe IDEA中启动新项目,选择合适的Flex模板。 2. 设计界面:使用...
7. Data Binding:Flex支持数据绑定,使得UI组件的属性可以自动与应用程序的数据模型保持同步。 8. Events and Event Handling:Flex组件可以触发和监听事件,用于实现用户交互和组件间的通信。 了解以上知识点后,...
在Flex开发中,数据绑定(Data Binding)是一种强大的机制,它允许UI组件的状态与应用程序的数据模型之间自动同步。数据绑定的原理是通过监听数据源的变化,并自动更新与之绑定的UI组件,反之亦然,从而简化了代码并...
6. **Data Binding**:Flex 3.0 引入了强大的数据绑定机制,允许UI元素与后台数据模型自动同步,减少手动更新UI的工作量,提高代码的可维护性。 7. **Remoting and Web Services**:Flex 3.0 支持与服务器端的数据...
7. **Data Binding**:Flex支持数据绑定,这是一种将视图组件的属性与应用程序数据模型关联的方法。当数据模型改变时,视图会自动更新,反之亦然。 8. **Services and Remote Communication**:Flex可以与服务器...