如何绑定到组件内的全局变量?
Posted
技术标签:
【中文标题】如何绑定到组件内的全局变量?【英文标题】: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”中声明。
有什么想法吗?
【问题讨论】:
【参考方案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;以上是关于如何绑定到组件内的全局变量?的主要内容,如果未能解决你的问题,请参考以下文章