您好,登錄后才能下訂單哦!
小編給大家分享一下Flex數據綁定中難以發現的無聲錯誤是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Flex數據綁定陷阱
當構建Flex或者Adobe AIR程序時,將一個對象的值自動的傳遞給另一個對象這種處理是Flex數據綁定最常用并最有用的特征之一。盡管如此,同時Flex數據綁定會減緩程序的初始化,并且當開發者不是完全理解數據綁定的機制是如何工作的話,會引起一些開發者意想不到的問題。***的解決方法及是確保你正確的使用了它并且在只有需要它的時候才使用它。
***條:難以發現的無聲錯誤
這有些綁定操作似乎已經工作,但是你***卻沮喪的發現沒有并且無從下手修改的例子。
在綁定表達式或者在綁定框架里調用綁定方法時拋出的異常和錯誤,只會默默的捕獲。因此你將在Flash Player調試版本中看不到任何運行時錯誤。不僅綁定沒有工作,而且沒有任何錯誤顯示。為什么這些錯誤被無聲捕獲?代碼實現綁定機制,在Flex數據綁定發生前需要幾個先決條件。綁定機制會吞噬掉任何錯誤以防止在運行時拋出運行時異常。如果你不希望在你的程序中看到這些可能出現的意外錯誤,這是一個很好的事情。
思考下下面的簡單綁定例子:
<?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>
我已經添加了xml變量綁定到Label組件。這些代碼會運行的很好;但是,我在組件預初始化時將xml變量設置為null。這個事件將在組件初始化序列開始之前被派發,此時Label組件還沒有被設置。這個xml變量被設置為null,因此沒有name屬性在xml對象上。如果你運行這個程序,你會發現Flex數據綁定沒有發生也沒有提示任何錯誤。
以上是“Flex數據綁定中難以發現的無聲錯誤是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。