日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flex数据绑定陷阱(一)

發(fā)布時(shí)間:2025/1/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flex数据绑定陷阱(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Flex數(shù)據(jù)綁定陷阱:常見的誤用和錯(cuò)誤

當(dāng)構(gòu)建Flex或者Adobe?AIR程序時(shí),將一個(gè)對(duì)象的值自動(dòng)的傳遞給另一個(gè)對(duì)象這種處理是數(shù)據(jù)綁定最常 用并最有用的特征之一。

盡管如此,同時(shí)數(shù)據(jù)綁定會(huì)減緩程序的初始化,并且當(dāng)開發(fā)者不是完全理解數(shù)據(jù)綁定的機(jī)制是如何工作的話,會(huì)引 起一些開發(fā)者意想不到的問題。

最好的解決方法及是確保你正確的使用了它并且在只有需要它的時(shí)候才使用它。在這篇文章中,我整理了十條開發(fā)者在構(gòu)建應(yīng)用使用數(shù)據(jù)綁定時(shí)常見的陷阱和錯(cuò)誤。



第一條:

難以發(fā)現(xiàn)的無聲錯(cuò)誤



這有些綁定操作似乎已經(jīng)工作,但是你最后卻沮喪的發(fā)現(xiàn)沒有并且無從下手修改的例子。



在綁定表達(dá)式或者在綁定框架里調(diào)用綁定方法時(shí)拋出的異常和錯(cuò)誤,只會(huì)默默的捕 獲。因此你將在Flash Player調(diào)試版本中看不到任何運(yùn)行時(shí)錯(cuò)誤。不僅綁定沒有工作,

而且沒有任何錯(cuò)誤顯示。為什么這些錯(cuò)誤被無聲捕獲?



代碼實(shí)現(xiàn)綁定機(jī)制,在綁定發(fā)生前需要幾個(gè)先決條件。綁定 機(jī)制會(huì)吞噬掉任何錯(cuò)誤以防止在運(yùn)行時(shí)拋出運(yùn)行時(shí)異常。

如果你不希望在你的程序中看到這些可能出現(xiàn)的意外錯(cuò)誤,這是一個(gè)很好的事情。



思考下下面的簡單綁定例子:

?



  • <?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"

  • ? ?xmlns:mx="library://ns.adobe.com/flex/mx"

  • ? ?minWidth="1024" minHeight="768"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?

  • ? ?preinitialize="handlePreinitialize()">? ?? ?? ?? ?? ?? ?? ?? ?

  • ?

  • ? ?<fx:Script>

  • ? ?? ?<![CDATA[

  • ? ?? ?? ?[Bindable]

  • ? ?? ?? ?private var xml:XML=

  • ? ?? ?? ?<users>

  • ? ?? ?? ?? ?<user>

  • ? ?? ?? ?? ?? ?<name>EladElrom</name>

  • ? ?? ?? ?? ?? ?<address>1 Wall Street</address>

  • ? ?? ?? ?? ?</user>

  • ? ?? ?? ?</users>;? ?

  • ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?

  • ? ?? ?? ?protected function handlePreinitialize():void

  • ? ?? ?? ?{

  • ? ?? ?? ?? ?xml = null;

  • ? ?? ?? ?? ?//BindingManager.debugBinding("label.text");

  • ? ?? ?? ?}

  • ? ?? ?]]>

  • ? ?</fx:Script>

  • ? ?? ?? ?? ?? ?? ?? ?? ?

  • ? ?<s:Label id="label" text="{xml.user.name}"/>

  • ?

  • </s:Application>



  • 復(fù)制代碼
    ?

    我已經(jīng)添加了xml變量綁定到Label組件。這些代碼會(huì)運(yùn)行的很好;但是,我在組件預(yù)初始化時(shí) 將xml變量設(shè)置為null。

    這個(gè)事件將在組件初始化序列開始之前被派發(fā),此時(shí)Label 組件還沒有被設(shè)置。這個(gè)xml變量被設(shè)置為null,因此沒有name屬性在xml對(duì)象上。

    如果你運(yùn)行這個(gè)程序,你會(huì)發(fā)現(xiàn)綁定沒有發(fā)生也沒有提示任何錯(cuò)誤。



    調(diào)試綁定



    雖然錯(cuò)誤被無聲的捕獲,你仍然有辦法可以找出是怎么回事。

    使用BindingManager.as和Binding.as來進(jìn)行調(diào)試并不容易,因?yàn)槿绻銢]有下載完整的Flex sdk的話,綁定類是沒有的。



    相反,你可以設(shè)置一個(gè)斷點(diǎn)并跟蹤相關(guān)的綁定對(duì)象來找出問題所在。在這種情況下,你會(huì)發(fā)現(xiàn)xml對(duì)象的值被設(shè)置為null,這就是為什么綁定為什么失敗的原 因(看圖1)。

    ?



    圖1. xml對(duì)象的值被設(shè)置為null

    ?





    另一種方法更加直觀,是使用BindingManager類的debugBinding方法。

    你設(shè)置你想觀察的組件和屬性,然后你就可以看到被捕獲的錯(cuò)誤。



    在上面的示例代碼中,我給下面的這行代碼加了注釋:

    ?



  • BindingManager.debugBinding("label.text");



  • 復(fù)制代碼
    ?

    把這行的注釋去掉并在debug模式下運(yùn)行它;你將 在控制臺(tái)看到綁定錯(cuò)誤(見圖2)

    ?



    圖2.控制臺(tái)輸出的綁定錯(cuò)誤

    ?





    看一下Binding.as和BindingManager.as類的代碼。代碼中含有許多的try...catch表達(dá)式來確保形成有效綁定的條件。

    以下有一些在綁定時(shí)可能拋出的錯(cuò)誤類型:



    ? ? * Error #1006: Call attempted on an object that is not a function.?

    ? ? * Error #1009: Null has no properties.? ? ? ??

    ? ? * Error #1010: Undefined has no properties.? ? ? ??

    ? ? * Error #1055: Has no properties.

    ? ? * Error #1069: Property - not found on - and there is no default value

    ? ? ? ??

    ? ? *錯(cuò)誤#1006:試圖調(diào)用的對(duì)象不是函數(shù)。

    ? ? *錯(cuò)誤#1009:空沒有屬性。

    ? ? *錯(cuò)誤#1010:未定義沒有屬性。

    ? ? *錯(cuò)誤#1055:沒有屬性。

    ? ? *錯(cuò)誤#1069:屬性 - 找不到 - 并且沒有默認(rèn)值



    如果任何這些錯(cuò)誤發(fā)生,綁定對(duì)象將默默捕獲他們并不再實(shí)現(xiàn)綁定。

    你可以使用綁定管理的調(diào)試選項(xiàng)來看到這些錯(cuò)誤。

    綁定管理除了捕獲這些錯(cuò)誤之外還捕獲其他的錯(cuò)誤。

    ?

    本文來自:http://blog.csdn.net/gongyongxing/archive/2010/08/10/5801472.aspx

    總結(jié)

    以上是生活随笔為你收集整理的Flex数据绑定陷阱(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。