我继承了Adobe AIR应用程序,并尝试通过Flash Builder 4.5进行调试。在Flash Builder中,当我查看其中一个MXML文件时,我会看到每次使用[Bindable]
标记的警告:
[Bindable]
internal var selectedPreviousID:String=null;
[Bindable]
internal var recent:mx.collections.ArrayCollection;
警告是:
访问未定义的属性Bindable
我认为合适的图书馆有一个重要的内容:
import mx.binding.utils。*;
根据this blog post中的建议,每个警告前面的行上没有遗漏的分号。
项目配置为使用Flex SDK 3.6。
此外,该文件不会在设计器中加载,并显示以下警告:
设计模式:组件布局期间出错。选择设计>刷新以刷新设计模式。
我错过了什么?在运行时,我看到一个空白窗口 - 我假设这是绑定未被触发的结果。此标记在Flex SDK 3.6中不可用吗?
答案 0 :(得分:3)
通过逐个删除代码中的元素,我发现警告似乎是由某个<mx:WebService>
元素声明引起的:
<mx:WebServiceid="service"
wsdl="https://blah.com/blah?WSDL"
operations='{{"Op1":this.method1()}}'/>
</mx:WebService>
具体来说,如果我删除了内联'operations'属性 - 那么针对Bindable的警告就会消失。必须在解析器中触发一些问题。
进一步测试显示使用内联属性语法的任何属性,例如:
properties='{{"outerDocument":this}}'
触发此解析器问题。此代码由反编译器生成,因此可能无效。
有一种替代语法可以将操作指定为XML节点而不是属性:
<mx:WebServiceid="service"
wsdl="https://blah.com/blah?WSDL"/>
<mx:operation name="Op1" result="this.method1(event)">
<mx:request>
<token>{credentials.token}</token>
</mx:request>
</mx:operation>
</mx:WebService>