14.6.使用E4X进行绑定XML的数据

14.6.1 问题
我想使用一个XML 的数据做为一个绑定的对象的数据来源。
14.6.2. 解决办法
在使用花括号或者<mx:Bindable>标签进行数据绑定时使用E4X 来进行数据绑定。
14.6.3. 讨论
ActionScript 3 中的E4X 语言是用于在语句中来过滤XML 中的数据,且的语法也与ActionScript 语法相近。在这一章节中没有太多的时间来讨论使用E4X 语句的好处的细节,但是它很有必有提醒你可以使用这种语言方便在一个控件和一个XML 间进行数据绑定。

E4X 语句在组件的声明都可以使用<mx:Binding>和花括号来。不能在类BindingUtils 中使用E4X。可能通过下面这个基于XML 的例子来更好的理解E4X 是如何工作的:
+展开
-XML
<item>
<name>Moe</name>
<type>The brains.</type>
<description>Has bowl cut.</description>
</item>

你可以在一个控件的属性中使用花括号来包含一段E4X 语句。
+展开
-XML
<mx:Label text="{_data..item.(name == 'Moe').description}" />

或者你可以使用<mx:Binding>标签来创建一个绑定:
+展开
-XML
<mx:Binding source="_data..item.(name == 'Moe').descriptiondestination="desc.text" />
<mx:Label id="desc" />


两种方法得到的结果是一样的。花括号在<mx:Binding>标签中的属性中是不需要的,因为这里边的值会当做ActionScript 语句一样来进行处理。在接下来的例子使用E4X 来为dataProvider 属性在一个List 和DataGrid 间进行了数据绑定。
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">
<mx:Script>
<![CDATA[
[Bindable]
private var _data:XML =
<items>
<item id='1'>
<name>Larry</name>
<type>The foil.</type>
<description>Has curly hair.</description>
</item>
<item id='2'>
<name>Moe</name>
<type>The brains.</type>
<description>Has bowl cut.</description>
</item>
<item id='3'>
<name>Curly</name>
<type>The braun.</type>
<description>Has bowl cut.</description>
</item>
</items>;

]]>
</mx:Script>
<mx:Binding source="{_data..item.(@id == '1').name}
{_data..item.(@id =='1').description.toLowerCase()}
"
destination="lab.text" />

<mx:Label id="lab" />
<mx:List width="200dataProvider="{_data..item.name}" />
<mx:DataGrid width="200dataProvider="{_data..item}">
<mx:columns>
<mx:DataGridColumn dataField="name" />
<mx:DataGridColumn dataField="type" />
</mx:columns>
</mx:DataGrid>
</mx:Application>

在组件展现初始化的过程中,绑定也得到了执行,基于E4X 语句的相关属性的值也得到了更新。

加支付宝好友偷能量挖...


评论(0)网络
阅读(96)喜欢(0)flash/flex/fcs/AIR