首页 > 设计 > WEB开发 > 正文

14.1.绑定一个属性

2023-07-22 12:39:07
字体:
来源:转载
供稿:网友
14.1.1 问题
我需要绑定一个对象的属性到另外一个对象中去。
14.1.2 解决办法
在MXML 组件中使用{}标记或者<mx:Binding>标记。
14.1.3 讨论
当你声明一个对象的属性到绑定到另外一个对象的属性,一个事件通知从源对象到目标对象则进行了更新的分发了。内部,则将该属性复制到目标属性的变量。为了绑定一个在MXML中定义的变量,你可以使用{}和<mx:Binding>。在一个组件中声明一个可绑定的属性,花括号用于包含源属性和来执行更新值。如下面的实例:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">
<mx:Panel paddingLeft="5paddingRight="5paddingTop="5paddingBottom="5">
<mx:Label text="Enter name:" />
<mx:TextInput id="nameInputmaxChars="20" />
<mx:HRule width="100%" />
<mx:Label text="You've typed:" />
<mx:Text text="{nameInput.text}" />
</mx:Panel>
</mx:Application>

在这个例子中,在文本控件中的text 属性绑定到了TextInput 控件中。当TextInput 中的值更新时,Text 控件中的txt 属性也进行了同步更新。在这个花括号中,点标语法用于文本控件中中的TextInput,该控件的ID 被声明为nameInput。

你也可以在MXML 中使用<mx:Binding>来声明数据绑定,声明的结果和在组件中使用花括号声明一样。那种方法你喜欢使用呢?结果则是看你使用的控制器了。在使用MVC 架构的应用中,当你定义为<mx:Binding>,那就是在为你的视图定义一个控制器。当你使用花括号,则你不需要特别的对视力和控制器进行分享,因为你的视图就扮演了控制器的作用。

考虑到花括号易于使用,快速开发,并且最终的结果是一样的,你开发过程中,选择使用<mx:Binding>则会从中受益,因为该语法易于阅读,并且允许能为同一个目标源定义不止一个数据源。

使用<mx:Binding>标记,需要定义源属性和目标属性:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">
<mx:Binding source="nameInput.textdestination="nameOutput.text" />
<mx:Panel paddingLeft="5paddingRight="5paddingTop="5paddingBottom="5">
<mx:Label text="Enter name:" />
<mx:TextInput id="nameInputmaxChars="20" />
<mx:HRule width="100%" />
<mx:Label text="You've typed:" />
<mx:Text id="nameOutput" />
</mx:Panel>
</mx:Application>

结果和上一个是一样的,但是这个例子中声明的ID 属性不公是TextInput 控件,同时还有Text控件做为目标的数据源,分别声明于<mx:Binding>中。

你可能意识到花括号在源和目的属性中没有必要,做为为什么它要存在在内部的声明中。它存在的原因是因为源和目的属性在ActionScript 中都是可以求值的。这样可以允许你添加任意附加的表达式。举例说明,假如你需要这个例子中一个文本控件去显示你文本输入控件中附加字符串'letters,在源属性中定义的。
+展开
-XML
<mx:Binding source="nameInput.text.length + ' letters.'destination="nameOutput.text" />
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表