Совместное использование переменных между компонентами mxml - PullRequest
3 голосов
/ 29 мая 2010

У меня есть несколько компонентов mxml в приложении, всем из которых требуется одна и та же переменная с именем genericX. Я включил эту переменную в основной mxml и сделал ее общедоступной

[Bindable] public var genericX:Number = 102;

но я все еще не могу получить к нему доступ из других компонентов mxml. Если я попытаюсь сделать это, например, он не распознает переменную.

<s:Button x="{genericX}" label="Click" />

Ответы [ 5 ]

4 голосов
/ 01 июня 2010

Есть также грязное решение, которое работает, но не приятно. Вы можете создать статическую переменную для класса приложения. Например:

[Bindable] public static var genericX : Object

Вы можете получить к нему доступ из любого места, как это:

MyApplicationName.genericX

Это не красиво, но работает :) 1007 *

симон

3 голосов
/ 29 мая 2010

Вы не можете получить доступ таким образом. Во Flex есть нечто, называемое Events, и вам нужно передать эту переменную в файле MXML другому, используя eventDispatcher.

Например

[Bindable] публичный var genericX: Number = 102;

private function init():void {

var evt:NewCustomEvent = new CustomEvent(CustomEvent.SENDDATA);
evt.genericaValue = genericX
dispatchEvent(evt);

}

Теперь вам нужно попасть в компонент MXML, где вы хотите получить это событие, и использовать addEventListner () для получения этого события и соответствующей переменной.

Тогда, наконец, введите его в свою кнопку.

1 голос
/ 20 июля 2010

Вы должны иметь доступ к любым глобальным переменным с помощью:

Flex 3:

var app:Application = mx.core.Application.application as Application;

Flex 4 (похоже на то, что вы используете):

var app:Object = FlexGlobals.topLevelApplication;

А потом:

<s:Button x="{app.genericX}" label="Click" />
0 голосов
/ 05 мая 2011
x="{parentApplication.genericX}"
0 голосов
/ 16 апреля 2011

Здесь - это пример совместного использования переменных между MXML компонентами путем объявления их общедоступными в основном приложении.

...