flex三种绑定数据源的方法
来源:互联网 发布:中国高铁领跑世界 知乎 编辑:程序博客网 时间:2024/05/21 18:47
在Flex中有三种绑定数据方式
1、{}
2、<mx:Binding> tag in MXML
3、BindingUtils methods in ActionScript
1、最常用的就是通过大括号{}的形式。
在{}绑定方式中,可以绑定property,ActionScript expression_rs,E4
X expression_r和ActionScript functions。绑定一个属性或者一段AS的表达式已经应用的非常普遍了。偶尔我们需要用到绑定的是一个AS的函数,但是,绑定一个函数的时候很多人会碰到问题,为什么我的数据没有自动更新呢?本人也曾经碰到过,看了开发文档才知道,原来忽略了一个细节问题。
就是在绑定函数的时候,通常情况下需要一个bindable的property作为该函数的参数。
如
Java代码
- <?xml version="1.0"?>
- <!– binding/ASInBraces.mxml –>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
- <mx:Script>
- <![CDATA[
- [Bindable]
- public var inString:String; // 绑定此变量
- public function getNewText(sourceString:String):String {
- return sourceString.toUpperCase();
- }
- ]]>
- </mx:Script>
- <mx:TextInput id="myTI" text="Enter text here"/>
- <mx:Button label="Trigger Binding" click="inString=myTI.text;"/>
- <mx:TextArea text="{getNewText(inString)}"/>
- </mx:Application>
<?xml version="1.0"?> <!– binding/ASInBraces.mxml –> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Bindable] public var inString:String; // 绑定此变量 public function getNewText(sourceString:String):String { return sourceString.toUpperCase(); } ]]> </mx:Script> <mx:TextInput id="myTI" text="Enter text here"/> <mx:Button label="Trigger Binding" click="inString=myTI.text;"/> <mx:TextArea text="{getNewText(inString)}"/> </mx:Application>
这里的inString一旦发生改变,会直接触发函数getNewText进行重新执行。
但如果你将函数的参数inString去掉,而直接放到getNewText()中,那么这个函数会在系统初始化的时候执行一次,而起不到绑定的效果。我可是在实际开发中有深刻体会。
2、用<mx:Binding>标签效果和{}一样,只需要指定source和destination两个属性即可,如:
<mx:Binding source="firstName.text" destination="myEmployee.name.first"/>
在<mx:Binding>的source属性中也可以使用{},如下面的例子中,其效果是等同的
Java代码
- <?xml version="1.0"?>
- <!– binding/ASInBindingTags.mxml –>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
- <mx:Script>
- <![CDATA[
- public function whatDogAte():String {
- return "homework";
- }
- ]]>
- </mx:Script>
- <mx:Binding source="’The dog ate my ‘+ whatDogAte()" destination="field1.text"/>
- <mx:Binding source="{’The dog ate my ‘+ whatDogAte()}" destination="field2.text"/>
- <mx:Binding source="The dog ate my {whatDogAte()}" destination="field3.text"/>
- <mx:TextArea id="field1"/>
- <mx:TextArea id="field2"/>
- <mx:TextArea id="field3"/>
- </mx:Application>
<?xml version="1.0"?> <!– binding/ASInBindingTags.mxml –> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ public function whatDogAte():String { return "homework"; } ]]> </mx:Script> <mx:Binding source="’The dog ate my ‘+ whatDogAte()" destination="field1.text"/> <mx:Binding source="{’The dog ate my ‘+ whatDogAte()}" destination="field2.text"/> <mx:Binding source="The dog ate my {whatDogAte()}" destination="field3.text"/> <mx:TextArea id="field1"/> <mx:TextArea id="field2"/> <mx:TextArea id="field3"/> </mx:Application>
3、在ActionScript中实现绑定
这种方法是使用mx.binding.utils.BindingUtils类来实现的。
如:
BindingUtils.bindProperty(textarea, "text", textinput, "text");
就是直接绑定了两个输入框的text属性,还可以用bindSetter来绑定一个数据源和一个set函数。如:
public function mySetterBinding(event:FlexEvent):void {
var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(setMyString, textInput2, "text");
}
这里就是将textInput2的text属性setter函数和setMyString函数绑定起来,
一旦textInput2的text被修改,那么将会触发setMyString函数。
- flex三种绑定数据源的方法
- Flex 绑定的三种方法
- Flex的三种绑定
- Flex 数据的三种绑定方式
- DropDownList绑定数据源的方法
- DropDownList绑定数据源的方法
- Atomikos数据源配置的三种方法
- spring数据源配置的三种方法
- Atomikos数据源配置的三种方法
- Atomikos数据源配置的三种方法
- FLEX-ComboBox绑定JAVA返回的数据源(RemoteObject)
- GridView后台绑定数据源的分页方法
- 事件绑定的三种方法
- javascript事件绑定的三种方法
- 元素绑定事件的三种 方法
- JS DOM 绑定的三种方法
- Tomcat下配置JNDI数据源的三种方法
- Tomcat下配置JNDI数据源的三种方法
- #undef THIS_FILE的问题
- 2009年7月27日Visual Studio 2008安全更新
- Visual studio 2005 不支持分离编译模式
- Big-endia与Little-endian
- 得到计算机名(摘)
- flex三种绑定数据源的方法
- ASP.NET程序中常用的三十三种代码
- (经典佛语200句)找回内心的宁静——佛语慧心
- Head First C# 中文版 第13章 控件和图形 page586
- StarUML---推荐一款UML工具
- JPA
- Struct Examples in C#
- 窗口刷新问题(WM_PAINT、BeginPaint、EndPaint的说明)
- 读取xml文件