不同组件之间的flex共享数据
问题描述:
我在我的flex应用程序中有各种mxml组件,它们都需要基于相同的数据显示统计信息。我该怎么做呢?我需要像cairngrom或puremvc这样的mvc框架吗?还是我可以在没有它的情况下做到这一点? 任何设计思路?不同组件之间的flex共享数据
答
Tour de Flex现在有一个关于框架的章节,指向那里的各种选项。另外看看我在Flex Best Practices上做的一个视频。在Architectural Patterns上查看Flex Screencast中的第一步。
答
你不需要任何框架。你知道数据绑定吗?
http://www.flexafterdark.com/docs/Flex-Binding
这种方式可以为许多组件设置你的数据作为数据提供程序。例如,以显示DataGrid中的数据,你在MXML中设置其属性
dataProvider="{yourDataArrayCollectionIdentifier}"
,并在你的ArrayCollection声明中,您需要设置的元标记[绑定]
[Bindable] var yourDataArrayCollectionIdentifier : ArrayCollection;
有,你可以为数据提供程序使用其他数据类型,只是arrayCollection是最常见的
答
有一些这方面的方法。出于封装的目的,您应该将您的共享数据分离出一个单独的类;可能是一个价值对象,尽管它不是必须的。
然后在此类类型的每个MXML组件中创建一个公共变量属性。在创建每个mxml组件的实例时,传入数据类的“全局”实例。
你不需要使用MVC框架,但是Cairngorm模型定位器也可以用来解决这个问题。模型定位器是一个单身人士。你会将数据存储在单例实例中;然后每个MXML组件都会引用数据的单例。不过,像这样创建外部依赖关系会破坏封装。我非常喜欢非应用程序特定组件的参数传递路线。
我知道数据绑定我问的是如何在不同的mxml视图之间共享数据?就像在不同模块之间共享的全局数组一样,只是我不喜欢全局数据。我正在考虑创建一个能够访问数据的单例类,只是想看看是否有更好的解决方案/这已经在之前完成了。 – user283403 2010-05-13 08:29:26
你的意思是如何从每个组件获得这些数据?您应该在创建时将这些数据传递到您的组件/模块中。这比使用单身人士更清洁。 – marianboda 2010-05-13 15:23:26