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



我使用Oracle, BlazeDS, Java &Flex。我有一个ArrayCollection包含数据从一个小的数据库表。这张桌子不会有太大变化。我想在不同的mxml文件中使用这个ArrayCollection来填充,例如ComboBoxes等。

问的原因,是做一个数据库调用每次填充一个组合框等是缓慢的,似乎没有必要。我试过在"main".mxml文件中这样做一次,但是变量在我需要它的地方无法访问。

完成这个任务的最佳方法是什么?使变量可以跨.mxml文件访问的最佳方法是什么?:)

[Bindable] public static var yourArrayCollection:ArrayCollection

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

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

如果这是一个较大的应用程序,我建议查看Parsley: http://www.spicefactory.org/parsley/。欧芹,你可以将数组集合添加到上下文和注入它无论何时你需要参考它。数组集合应该在应用程序启动期间填充,并且可以根据需要更新。

基本上有两种方法。单例方式和静态类方式。例如,单例是一个只实例化一次的类,通过这里描述的机制。静态类与常规类有一点不同:首先,您不需要实例化它。

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

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

你可以把它设为某个类的公共成员,然后把这个类导入到所有基于mxml的类中:

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

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

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

它可以从程序中的任何地方访问(前提是你已经为它分配了一个有效的ArrayCollection)

combobox.dataProvider=Globals.iCollection;

最新更新