自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Flex數(shù)據(jù)綁定中常見(jiàn)的誤用和錯(cuò)誤

開(kāi)發(fā) 后端
Flex數(shù)據(jù)綁定常見(jiàn)的誤用和錯(cuò)誤,數(shù)據(jù)綁定會(huì)減緩程序的初始化,并且當(dāng)開(kāi)發(fā)者不是完全理解數(shù)據(jù)綁定的機(jī)制是如何工作的話,會(huì)引起一些開(kāi)發(fā)者意想不到的問(wèn)題。

本文和大家重點(diǎn)討論一下Flex數(shù)據(jù)綁定陷阱:常見(jiàn)的誤用和錯(cuò)誤,當(dāng)構(gòu)建Flex或者AdobeAIR程序時(shí),將一個(gè)對(duì)象的值自動(dòng)的傳遞給另一個(gè)對(duì)象這種處理是Flex數(shù)據(jù)綁定最常用并最有用的特征之一。

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

當(dāng)構(gòu)建Flex或者AdobeAIR程序時(shí),將一個(gè)對(duì)象的值自動(dòng)的傳遞給另一個(gè)對(duì)象這種處理是Flex數(shù)據(jù)綁定最常用并最有用的特征之一。
盡管如此,同時(shí)Flex數(shù)據(jù)綁定會(huì)減緩程序的初始化,并且當(dāng)開(kāi)發(fā)者不是完全理解Flex數(shù)據(jù)綁定的機(jī)制是如何工作的話,會(huì)引起一些開(kāi)發(fā)者意想不到的問(wèn)題。
最好的解決方法及是確保你正確的使用了它并且在只有需要它的時(shí)候才使用它。在這篇文章中,我整理了十條開(kāi)發(fā)者在構(gòu)建應(yīng)用使用Flex數(shù)據(jù)綁定時(shí)常見(jiàn)的陷阱和錯(cuò)誤。

第一條:難以發(fā)現(xiàn)的無(wú)聲錯(cuò)誤

這有些綁定操作似乎已經(jīng)工作,但是你最后卻沮喪的發(fā)現(xiàn)沒(méi)有并且無(wú)從下手修改的例子。
在綁定表達(dá)式或者在綁定框架里調(diào)用綁定方法時(shí)拋出的異常和錯(cuò)誤,只會(huì)默默的捕獲。因此你將在FlashPlayer調(diào)試版本中看不到任何運(yùn)行時(shí)錯(cuò)誤。不僅綁定沒(méi)有工作,
而且沒(méi)有任何錯(cuò)誤顯示。為什么這些錯(cuò)誤被無(wú)聲捕獲?

代碼實(shí)現(xiàn)綁定機(jī)制,在綁定發(fā)生前需要幾個(gè)先決條件。綁定機(jī)制會(huì)吞噬掉任何錯(cuò)誤以防止在運(yùn)行時(shí)拋出運(yùn)行時(shí)異常。
如果你不希望在你的程序中看到這些可能出現(xiàn)的意外錯(cuò)誤,這是一個(gè)很好的事情。

思考下下面的簡(jiǎn)單綁定例子:

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <s:Applicationxmlns:fxs:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009" 
  3. xmlns:s="library://ns.adobe.com/flex/spark" 
  4. xmlns:mx="library://ns.adobe.com/flex/mx" 
  5. minWidth="1024"minHeight="768"  
  6. preinitialize="handlePreinitialize()"> 
  7.  
  8. <fx:Script> 
  9. <![CDATA[  
  10. [Bindable]  
  11. privatevarxml:XML=  
  12. <users>  
  13. <user>  
  14. <name>EladElrom</name>  
  15. <address>1WallStreet</address>  
  16. </user>  
  17. </users>;  
  18.  
  19. protectedfunctionhandlePreinitialize():void  
  20. {  
  21. xml=null;  
  22. //BindingManager.debugBinding("label.text");  
  23. }  
  24. ]]> 
  25. </fx:Script> 
  26.  
  27. <s:Labelids:Labelid="label"text="{xml.user.name}"/> 
  28.  
  29. </s:Application> 
  30.  

 

我已經(jīng)添加了xml變量綁定到Label組件。這些代碼會(huì)運(yùn)行的很好;但是,我在組件預(yù)初始化時(shí)將xml變量設(shè)置為null。
這個(gè)事件將在組件初始化序列開(kāi)始之前被派發(fā),此時(shí)Label組件還沒(méi)有被設(shè)置。這個(gè)xml變量被設(shè)置為null,因此沒(méi)有name屬性在xml對(duì)象上。
如果你運(yùn)行這個(gè)程序,你會(huì)發(fā)現(xiàn)綁定沒(méi)有發(fā)生也沒(méi)有提示任何錯(cuò)誤。

調(diào)試綁定

雖然錯(cuò)誤被無(wú)聲的捕獲,你仍然有辦法可以找出是怎么回事。
使用BindingManager.as和Binding.as來(lái)進(jìn)行調(diào)試并不容易,因?yàn)槿绻銢](méi)有下載完整的Flexsdk的話,F(xiàn)lex數(shù)據(jù)綁定類是沒(méi)有的。
相反,你可以設(shè)置一個(gè)斷點(diǎn)并跟蹤相關(guān)的綁定對(duì)象來(lái)找出問(wèn)題所在。在這種情況下,你會(huì)發(fā)現(xiàn)xml對(duì)象的值被設(shè)置為null,這就是為什么綁定為什么失敗的原因(看圖1)。


另一種方法更加直觀,是使用BindingManager類的debugBinding方法。
你設(shè)置你想觀察的組件和屬性,然后你就可以看到被捕獲的錯(cuò)誤。

在上面的示例代碼中,我給下面的這行代碼加了注釋:BindingManager.debugBinding("label.text");
把這行的注釋去掉并在debug模式下運(yùn)行它;你將在控制臺(tái)看到綁定錯(cuò)誤(見(jiàn)圖2)

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

 

看一下Binding.as和BindingManager.as類的代碼。代碼中含有許多的try...catch表達(dá)式來(lái)確保形成有效綁定的條件。
以下有一些在綁定時(shí)可能拋出的錯(cuò)誤類型:

◆Error#1006:Callattemptedonanobjectthatisnotafunction.
◆Error#1009:Nullhasnoproperties.
◆Error#1010:Undefinedhasnoproperties.
◆Error#1055:Hasnoproperties.
◆Error#1069:Property-notfoundon-andthereisnodefaultvalue

◆錯(cuò)誤#1006:試圖調(diào)用的對(duì)象不是函數(shù)。
◆錯(cuò)誤#1009:空沒(méi)有屬性。
◆錯(cuò)誤#1010:未定義沒(méi)有屬性。
◆錯(cuò)誤#1055:沒(méi)有屬性。
◆錯(cuò)誤#1069:屬性-找不到-并且沒(méi)有默認(rèn)值

如果任何這些錯(cuò)誤發(fā)生,綁定對(duì)象將默默捕獲他們并不再實(shí)現(xiàn)Flex數(shù)據(jù)綁定。你可以使用綁定管理的調(diào)試選項(xiàng)來(lái)看到這些錯(cuò)誤。
綁定管理除了捕獲這些錯(cuò)誤之外還捕獲其他的錯(cuò)誤。

【編輯推薦】

  1. 解析Flex4的十大變化
  2. 在Flex中使用樣式的五大方法
  3. 解析對(duì)AdobeFlex的十大誤解
  4. FlexBuilder3.0與Eclipse3.4的完美結(jié)合
  5. 學(xué)習(xí)Flex時(shí)必須要知道的10件事情
責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2019-05-31 15:10:33

SQL數(shù)據(jù)庫(kù)MySQL

2010-07-28 13:24:20

Flex數(shù)據(jù)綁定

2010-08-12 10:56:17

Flex數(shù)據(jù)綁定

2024-01-06 08:16:19

init?函數(shù)數(shù)據(jù)開(kāi)發(fā)者

2010-08-10 10:56:39

2022-04-27 22:07:32

SQL數(shù)據(jù)庫(kù)分頁(yè)查詢

2017-06-07 15:37:51

MySQLSQL性能優(yōu)化

2019-06-21 10:13:26

JavaScript錯(cuò)誤開(kāi)發(fā)

2011-07-29 13:17:35

HTML 5

2010-07-28 13:31:10

Flex數(shù)據(jù)綁定

2010-07-28 13:11:13

Flex數(shù)據(jù)綁定

2010-07-28 13:40:44

Flex數(shù)據(jù)綁定

2009-08-27 11:12:04

C# foreach

2022-03-17 08:34:47

TypeScript項(xiàng)目類型

2017-10-20 12:18:02

HTML5代碼header

2010-04-19 13:56:19

Oracle數(shù)據(jù)庫(kù)服務(wù)

2011-04-02 10:47:51

2010-07-30 09:08:21

Flex數(shù)據(jù)綁定

2010-08-12 11:34:15

Flex數(shù)據(jù)綁定

2010-08-05 15:06:19

Flex數(shù)據(jù)綁定
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)