我继承了一个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/

10-15 03:57