我继承了一个Adobe AIR应用程序,并试图通过Flash Builder 4.5对其进行调试。在Flash Builder中,当我查看一个MXML文件时,每次使用[Bindable]
标记时都会看到警告:
[Bindable]
internal var selectedPreviousID:String=null;
[Bindable]
internal var recent:mx.collections.ArrayCollection;
警告是:
访问 undefined 的属性Bindable
我认为合适的库有一个导入:
导入mx.binding.utils。*;
根据this blog post中的建议,在每个警告之前的行上也没有缺少分号。
该项目配置为使用Flex SDK 3.6。
此外,该文件将不会在设计器中加载,并显示以下警告:
设计模式:组件布局期间出错。选择“设计>刷新”以刷新设计模式。
我想念什么?在运行时,我看到一个空白窗口-我认为这是未触发绑定(bind)的结果。该标签在Flex SDK 3.6中不可用吗?
最佳答案
通过一一删除代码中的元素,我发现这些警告似乎是由更早的<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>
关于apache-flex - Flash Builder:“Access of undefined property Bindable”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6216797/