學(xué)習(xí)筆記 如何調(diào)試Flex數(shù)據(jù)綁定
本文向大家描述一下如何調(diào)試Flex數(shù)據(jù)綁定,使用Flex數(shù)據(jù)綁定時(shí)最好的方法是確保你正確的使用了它并且在只有需要它的時(shí)候才使用它。
Flex數(shù)據(jù)綁定陷阱:常見的誤用和錯(cuò)誤
當(dāng)構(gòu)建Flex或者Adobe AIR程序時(shí),將一個(gè)對(duì)象的值自動(dòng)的傳遞給另一個(gè)對(duì)象這種處理是Flex數(shù)據(jù)綁定最常用并最有用的特征之一。盡管如此,同時(shí)Flex數(shù)據(jù)綁定會(huì)減緩程序的初始化,并且當(dāng)開發(fā)者不是完全理解數(shù)據(jù)綁定的機(jī)制是如何工作的話,會(huì)引起一些開發(fā)者意想不到的問題。最好的解決方法及是確保你正確的使用了它并且在只有需要它的時(shí)候才使用它。
調(diào)試Flex數(shù)據(jù)綁定
雖然錯(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,這就是為什么綁定為什么失敗的原因。
另一種方法更加直觀,是使用BindingManager類的debugBinding方法。你設(shè)置你想觀察的組件和屬性,然后你就可以看到被捕獲的錯(cuò)誤。在上面的示例代碼中,我給下面的這行代碼加了注釋:
- BindingManager.debugBinding("label.text");
把這行的注釋去掉并在debug模式下運(yùn)行它;你將在控制臺(tái)看到Flex數(shù)據(jù)綁定的錯(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ā)生,F(xiàn)lex數(shù)據(jù)綁定對(duì)象將默默捕獲他們并不再實(shí)現(xiàn)綁定。你可以使用綁定管理的調(diào)試選項(xiàng)來看到這些錯(cuò)誤。綁定管理除了捕獲這些錯(cuò)誤之外還捕獲其他的錯(cuò)誤。
【編輯推薦】