本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2010-06-11 · 原址 http://www2.flash8.net/teach/8268.htm ← Flash 保存计划

Flex数据绑定陷阱:常见的误用和错误(三)

作者:medcl   类型:编译   来源:9RIA.com天地会

  原文地址:http://www.adobe.com/devnet/flex/articles/databinding_pitfalls_03.html

第二条

第三条

Using binding in place of direct assignment
在直接赋值的地方使用绑定


有一种情况,就是你可以不使用绑定,使用直接赋值就可以成功实现同样效果的话,你最好不要使用绑定。我已经看到过很多形式的这类型错误了。

下面的代码就可以说明:

<?xml version="1.0" encoding="utf-8"?> 

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 

   xmlns:s="library://ns.adobe.com/flex/spark" 

   minWidth="1024" minHeight="768">                         



   <fx:Script> 

      <![CDATA[ 

         private var text:String; 

      ]]> 

   </fx:Script>                         



   <s:layout> 

      <s:VerticalLayout/> 

   </s:layout> 

                            

   <s:TextInput id="textInput2" text="{text}"  /> 



</s:Application>

这段代码中定义了一个文本输入框,将私有成员变量绑定到这个文本输入框的text属性上。它看起来无害,对不对?我经常看到Flex应用程序中使用这些类型的标签。Flex的编译器会自动生成代码来实现绑定。

你会发现,尽管你不需要绑定text字符串,因为它是一次性赋值的,但是编译器仍然会生成代码,来适应属性绑定的条件。另外,有些情况下你需要在赋值后解除绑定,或是移出绑定代码来减少开销,但是你在MXML中使用<mx:Binding> 标签后将不能这样做。

作为一个经验法则,应避免使用绑定到一个私有变量。

在上面的例子中,你可以直接给输入文本框设置值。

<s:TextInput id="textInput2" text="some text goes here" />

当你使用直接赋值时,你会大大减少你的开销,因为编译器不再会生成你不需要的绑定代码。作为一个通用的经验法则,不要使用数据绑定,除非你绑定的值可能或肯定会改变。

在线投稿和咨询,联系闪吧编辑    责任编辑:silvia    时间:2010年6月12日