在mxml组件之间共享变量

3

我在应用程序中有几个 mxml 组件,它们都需要同一个名为 genericX 的变量。我已将该变量包含在主 mxml 中并将其设置为公共的。

[Bindable] public var genericX:Number = 102;

但我仍然无法从其他的mxml组件中访问它。例如,如果我尝试这样做,它将无法识别该变量。

<s:Button x="{genericX}" label="Click" />
5个回答

4

还有一种不太好的方法,但是很有效。你可以在应用程序类中创建一个静态变量。例如:

[Bindable] public static var genericX : Object

您可以像这样从任何地方访问它:
MyApplicationName.genericX

虽然不太美观,但它确实能工作 :)

西蒙


3

您不能以这种方式访问。在Flex中有一个叫做Events的东西,您需要在MXML文件中通过eventDispatcher将此变量传递给另一个变量。

例如:

[Bindable] public var genericX:Number = 102;

private function init():void {

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

}

现在您需要进入想要接收此事件的MXML组件,并使用addEventListner()来接收此事件和相应的变量。

最后将其注入到您的按钮中。


1

你应该能够通过以下方式访问任何全局变量:

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" />

那么在主应用程序中,我该如何声明它,而不是像[Bindable] public var genericX:Number = 102这样声明为public static - Kamo
你可以像在原始示例中那样声明它: [Bindable] public var genericX:Number = 102 它不需要是静态的。 - Daniel R

0
x="{parentApplication.genericX}"

0

这里是一个示例,通过在主应用程序中将它们声明为公共变量,在MXML组件之间共享变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接