从另一个.MXML中的一个.MXML访问公共可绑定变量

时间:2011-06-12 18:24:31

标签: flex actionscript-3 mxml

我有一个主要的应用程序设置“main.mxml” 其中包含以下声明:

[Bindable]
[Embed(source="../images/common/user.png")] 
public var userIcon : Class;

我有另一个模块,我希望将其作为按钮图标访问。 我尝试过以下定义,但它不起作用:

<s:Group width="100%" height="29">
    <s:layout>
        <s:VerticalLayout horizontalAlign="center"/>
    </s:layout>
    <s:Button id="buttonLoad" width="80%" label="Loading" icon="{ main.userIcon }"/>
</s:Group>
  • 如何从其他模块访问main.mxml中的声明?

1 个答案:

答案 0 :(得分:2)

MXML类的名称不是其实例的标识符(因为它可能有很多实例)。您应该将MXML文件视为文件而不是类。它们与普通的ActionScript类完全相同。与其他OOP语言中的规则相同。因此,如果main.mxml main是该类的类名,则其包由相对于源文件夹的MXML文件路径确定(如在ActionScript类中)。这就是为什么你应该用大写字母(Main.mxml而不是main.mxml)命名你的MXML类。

如果您的main.mxml是顶级应用,则可以将其称为FlexGlobals.topLevelApplication。但这不是正确的做事方式。

最好的方法是将此属性注入目标类。您可以使用依赖注入框架/容器(如Spring ActionScriptRobotLegsParsley)来执行此操作。或者你可以通过从顶层应用程序委托给包含处理模块的代码片段的类来手动完成。加载模块时,在那里传递该值。