Flex:所有.mxml文件都可以访问变量

时间:2011-10-04 16:16:01

标签: flex

我正在使用Oracle,BlazeDS,Java&柔性。我有一个ArrayCollection包含来自小型数据库表的数据。该表不会有太大变化。我想在不同的mxml文件中使用这个ArrayCollection来填充例如ComboBoxes等。

问的原因是,每次填充ComboBox等进行数据库调用都很慢而且似乎没必要。我尝试在“main”.mxml文件中执行此操作一次,但是在我需要的地方无法访问该变量。

完成此任务的最佳方法是什么?跨.mxml文件创建变量可访问的最佳方法是什么? :)

5 个答案:

答案 0 :(得分:3)

如果这是一个更大的应用程序,我建议您查看Parsley:http://www.spicefactory.org/parsley/。使用Parsley,您可以将数组集合添加到上下文中,只需在需要引用它时将其注入。应用程序启动期间应填充数组集合,并可根据需要进行更新。

答案 1 :(得分:3)

[Bindable] public static var yourArrayCollection:ArrayCollection

这应该使它在任何地方都可见,但使用静态变量通常不是一个好主意。

如果你不想让它变为静态并且需要引用其他函数等,你也可以实现一个单例实例来持久化变量 - 但我认为静态变量应该可以。

答案 2 :(得分:2)

基本上有两种方式。单例方式,以及静态类方式。例如,单例是一个仅通过此处描述的机制进行一次实例化的类。静态类与常规类略有不同:首先,你不会实例化它。

有关如何在ActionScript 3中实现单例的更多信息:here

有关静态类和变量的更多信息:here

答案 3 :(得分:1)

您可以将其设为某个类的公共成员,并在所有基于MXML的类中导入该类:

public class DBWrapper {
    [Bindable]
    public var ItemList:ArrayCollection;
}

答案 4 :(得分:1)

我通常将它作为Globals类的静态成员

public class Globals {
    [Bindable] public var iCollection:ArrayCollection;
}

可以从程序中的任何位置访问它(假设您首先为其分配了有效的ArrayCollection)

combobox.dataProvider=Globals.iCollection;