Flash Builder:“访问未定义属性Bindable”

时间:2011-06-02 15:38:47

标签: flex actionscript-3 binding flash-builder

我继承了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中不可用吗?

1 个答案:

答案 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>