我在我的flex应用程序中有各种mxml组件,它们都需要根据相同的数据显示统计信息。我该怎么做呢?我需要一些像cairngrom或puremvc这样的mvc框架,还是我可以不用它们? 任何设计理念?
答案 0 :(得分:0)
您不需要任何框架。你知道数据绑定吗?
http://www.flexafterdark.com/docs/Flex-Binding
这样,您可以将数据设置为许多组件的数据提供者。例如,要在dataGrid中显示您的数据,请在mxml中设置它的属性
dataProvider="{yourDataArrayCollectionIdentifier}"
并在您的arrayCollection声明中,您需要设置metatag [Bindable]
[Bindable] var yourDataArrayCollectionIdentifier : ArrayCollection;
还有其他数据类型可以用作dataprovider,只是arrayCollection是最常见的
答案 1 :(得分:0)
有一些方法可以解决这个问题。出于封装目的,您应该将共享数据隔离到一个单独的类中;可能是一个价值对象,虽然它不一定是。
然后在此类类型的每个MXML组件中创建一个公共变量属性。在创建每个mxml组件的实例时,请传入数据类的“全局”实例。
您不需要使用MVC框架,但Cairngorm模型定位器也可用于解决此问题。模型定位器是单例。您将数据存储在单例实例中;然后每个MXML组件将引用数据的单例。但是,创建这样的外部依赖会破坏封装。我更喜欢非特定应用程序组件的参数传递路径。
答案 2 :(得分:0)
Tour de Flex现在有一个关于框架的部分,指出了那里的各种选项。另请查看我在Flex Best Practices上完成的视频。并查看Architectural Patterns上的Flex Screencast中的第一步。
答案 3 :(得分:0)
package
{
public class ApplicationViewModel
{
[Bindable] public var message:String = "";
}
}
您现在可以在MXML中使用此消息,您可以在其中创建该实例。
单个类用于您想要保存所有状态的一些信息的不同场景。一个更好的例子是国际象棋棋盘,你的棋盘是Singleton级别,它的状态永远不会改变,因为你必须跟踪所有硬币在棋盘上移动及其位置。
您正在要显示数据的视图中注入此消息变量。