【问题标题】:How can I bind to global variables inside my component?如何绑定到组件内的全局变量?
【发布时间】:2010-11-21 01:58:20
【问题描述】:

我开发了一个组件,它是几个项目(画布、标签等)的组合,但是当我尝试将它绑定到一个变量时,例如:{stationXML.getItemAt(1).AAA. @value},它不起作用。在我将所有项目组合到一个组件中之前,它们都在它们工作时的主 MXML 文件中。

不确定是否重要,但“stationXML”数组集合变量在文件“Station.as”中声明。

有什么想法吗?

【问题讨论】:

    标签: apache-flex actionscript-3 actionscript flex3 components


    【解决方案1】:

    当您说“全局变量”时,它是在哪里以及如何声明的? Flex 应用程序中并没有真正意义上的全局变量。如果你在你的主 MXML 类中声明了一些没有使它成为全局的东西,它使它可以被那个主应用程序类的实例访问。如果要在组件中访问该值,则必须将其传递给该组件。或者,您可以实现一个单例类来有效地提供对这些值的“全局”访问。


    例如,在组件中,创建一个公共属性:

    public var xmlData:XML;
    

    然后在主mxml中,向下传递值:

    <xxx:MyComponent id="foo" x="10" xmlData="{theValue}"/>
    

    【讨论】:

    • 我很抱歉我的错误陈述。该项目在 Station.as 文件中被声明为“公共”变量(可绑定)。如何将该值传递给该组件?
    • 您可以在组件上定义一个外部事物可以“设置”的公共属性。然后只需从主 mxml 设置该属性。请参阅上面的编辑。
    • 非常感谢,这非常有效!唯一的变化是我必须使变量 (xmlData) 在组件内可绑定。然而,一个问题。应用程序会在组件内创建一个全新的 XML 变量(将本质上相同的项目占用的内存增加一倍)还是更像一个指针?
    【解决方案2】:

    Station.as 是否扩展了 EventDispatcher 并且类(或属性)是否带有 [Bindable] 元数据标签?为了使绑定工作,您的类需要在其继承结构中的某个位置扩展 EventDispatcher,以便它能够通知绑定“客户端”它已更新。

    【讨论】:

    • Station.as 不扩展 EventDispatcher。我该怎么做,它有什么作用?该项目被声明为可绑定的,例如: [Bindable] public var stationXML:ArrayCollection = new ArrayCollection;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2012-11-09
    • 2014-10-18
    • 2013-03-23
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多