本文向大家描述一下如何调试Flex数据绑定,使用Flex数据绑定时最好的方法是确保你正确的使用了它并且在只有需要它的时候才使用它。
Flex数据绑定陷阱:常见的误用和错误
当构建Flex或者Adobe AIR程序时,将一个对象的值自动的传递给另一个对象这种处理是Flex数据绑定最常用并最有用的特征之一。尽管如此,同时Flex数据绑定会减缓程序的初始化,并且当开发者不是完全理解数据绑定的机制是如何工作的话,会引起一些开发者意想不到的问题。最好的解决方法及是确保你正确的使用了它并且在只有需要它的时候才使用它。
调试Flex数据绑定
虽然错误被无声的捕获,你仍然有办法可以找出是怎么回事。使用BindingManager.as和Binding.as来进行调试并不容易,因为如果你没有下载完整的Flex sdk的话,绑定类是没有的。相反,你可以设置一个断点并跟踪相关的绑定对象来找出问题所在。在这种情况下,你会发现xml对象的值被设置为null,这就是为什么绑定为什么失败的原因。
另一种方法更加直观,是使用BindingManager类的debugBinding方法。你设置你想观察的组件和属性,然后你就可以看到被捕获的错误。在上面的示例代码中,我给下面的这行代码加了注释:
- BindingManager.debugBinding("label.text");
把这行的注释去掉并在debug模式下运行它;你将在控制台看到Flex数据绑定的错误。
看一下Binding.as和BindingManager.as类的代码。代码中含有许多的try...catch表达式来确保形成有效绑定的条件。以下有一些在绑定时可能抛出的错误类型:
◆ 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
◆错误#1006:试图调用的对象不是函数。
◆错误#1009:空没有属性。
◆错误#1010:未定义没有属性。
◆错误#1055:没有属性。
◆错误#1069:属性 - 找不到 - 并且没有默认值
如果任何这些错误发生,Flex数据绑定对象将默默捕获他们并不再实现绑定。你可以使用绑定管理的调试选项来看到这些错误。绑定管理除了捕获这些错误之外还捕获其他的错误。
【编辑推荐】