Flex: переменная доступна для всех файлов .mxml - PullRequest
0 голосов
/ 04 октября 2011

Я использую Oracle, BlazeDS, Java & Flex. У меня есть ArrayCollection, содержащая данные из небольшой таблицы базы данных. Эта таблица не будет предметом больших изменений. Я хочу использовать эту коллекцию ArrayCollection для разных mxml-файлов, например, для заполнения. Комбинированные списки и т. Д.

Причина, по которой вы спрашиваете, заключается в том, что выполнение вызова базы данных каждый раз при заполнении ComboBox и т. Д. Происходит медленно и кажется ненужным. Я пытался сделать это один раз в «основном» .mxml файле, но тогда переменная была недоступна там, где мне это было нужно.

Каков наилучший подход для выполнения этой задачи? Каков наилучший способ сделать переменную доступной для файлов .mxml? :)

Ответы [ 5 ]

3 голосов
/ 04 октября 2011
[Bindable] public static var yourArrayCollection:ArrayCollection

Это должно сделать его видимым где угодно, но использование статических переменных, как правило, не очень хорошая идея.

Вы также можете реализовать экземпляр singleton, чтобы сохранить переменную, если вы не хотите делать ее статичнойнужно ссылаться на другие функции и т. д. - но я думаю, что статическая переменная должна работать нормально.

3 голосов
/ 04 октября 2011

Если это более крупное приложение, я бы порекомендовал посмотреть на Parsley: http://www.spicefactory.org/parsley/. С Parsley вы можете добавить коллекцию массивов в контекст и просто внедрить ее, когда вам понадобится ссылка на нее. Коллекция массивов должна быть заполнена во время запуска приложения и может обновляться по мере необходимости.

2 голосов
/ 05 октября 2011

Есть два основных способа. Одиночный путь и статический путь класса. Синглтон - это класс, который создается только один раз, например, посредством механизма, описанного здесь. Статический класс немного отличается от обычного: в первую очередь вы его не создадите.

Для получения дополнительной информации о том, как реализовать синглтон в ActionScript 3: здесь .

Для получения дополнительной информации о статических классах и переменных: здесь .

1 голос
/ 04 октября 2011

Обычно я делаю его статическим членом класса Globals

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

Доступ к нему можно получить из любого места в программе (при условии, что вы сначала присвоили ему действительную коллекцию ArrayCollection)

combobox.dataProvider=Globals.iCollection;
1 голос
/ 04 октября 2011

Вы можете просто сделать его открытым членом некоторого класса и импортировать этот класс во все классы на основе MXML:

public class DBWrapper {
    [Bindable]
    public var ItemList:ArrayCollection;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...