2010-05-13 55 views
1

我在我的flex应用程序中有各种mxml组件,它们都需要基于相同的数据显示统计信息。我该怎么做呢?我需要像cairngrom或puremvc这样的mvc框架吗?还是我可以在没有它的情况下做到这一点? 任何设计思路?不同组件之间的flex共享数据

回答

0

你不需要任何框架。你知道数据绑定吗?

http://www.flexafterdark.com/docs/Flex-Binding

这种方式可以为许多组件设置你的数据作为数据提供程序。例如,以显示DataGrid中的数据,你在MXML中设置其属性

dataProvider="{yourDataArrayCollectionIdentifier}" 

,并在你的ArrayCollection声明中,您需要设置的元标记[绑定]

[Bindable] var yourDataArrayCollectionIdentifier : ArrayCollection; 

有,你可以为数据提供程序使用其他数据类型,只是arrayCollection是最常见的

+0

我知道数据绑定我问的是如何在不同的mxml视图之间共享数据?就像在不同模块之间共享的全局数组一样,只是我不喜欢全局数据。我正在考虑创建一个能够访问数据的单例类,只是想看看是否有更好的解决方案/这已经在之前完成了。 – user283403 2010-05-13 08:29:26

+0

你的意思是如何从每个组件获得这些数据?您应该在创建时将这些数据传递到您的组件/模块中。这比使用单身人士更清洁。 – marianboda 2010-05-13 15:23:26

0

有一些这方面的方法。出于封装的目的,您应该将您的共享数据分离出一个单独的类;可能是一个价值对象,尽管它不是必须的。

然后在此类类型的每个MXML组件中创建一个公共变量属性。在创建每个mxml组件的实例时,传入数据类的“全局”实例。

你不需要使用MVC框架,但是Cairngorm模型定位器也可以用来解决这个问题。模型定位器是一个单身人士。你会将数据存储在单例实例中;然后每个MXML组件都会引用数据的单例。不过,像这样创建外部依赖关系会破坏封装。我非常喜欢非应用程序特定组件的参数传递路线。

0
​​

您现在可以在MXML中使用此消息进行实例化。

单例类用于您想要保存所有状态的一些信息的不同场景。一个更好的例子是国际象棋棋盘,你的棋盘是单人班,并且它的状态永远不会改变,因为你必须跟踪所有在棋盘上移动的硬币及其位置。

您正在将此消息变量注入要显示数据的视图中。

+0

它应该始终处于一个匿名包中,还是与您当前正在调用的包相同? – ina 2011-11-20 05:28:08

+0

是否需要[Bindable]? – ina 2011-11-20 05:30:33