我正在使用Oracle,BlazeDS,Java&柔性。我有一个ArrayCollection包含来自小型数据库表的数据。该表不会有太大变化。我想在不同的mxml文件中使用这个ArrayCollection来填充例如ComboBoxes等。
问的原因是,每次填充ComboBox等进行数据库调用都很慢而且似乎没必要。我尝试在“main”.mxml文件中执行此操作一次,但是在我需要的地方无法访问该变量。
完成此任务的最佳方法是什么?跨.mxml文件创建变量可访问的最佳方法是什么? :)
答案 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;