如何创建可在整个组件中共享的实例模型(可以多次创建)

时间:2010-05-20 14:02:44

标签: flex actionscript-3 singleton cairngorm swiz

我正在尝试创建一个最终将存在于另一个actionscript / flex应用程序中的模块化结构。我在外部应用程序中使用cairngorm,我想在内部应用程序中创建这个新组件的多个实例。由于模型的单例性质,Cairngorm不能用于创建多个重复组件。

我正在创建的组件是伪视频查看器。我想在这个组件实例中有一个共享模型。我正在努力寻找在组件中共享单个模型的方法。如果我使用单例模式,我不能创建此组件的多个实例。如果我创建一个实例并让组件确保只有一个实例,那么我很难将模型轻松地传递给所有需要它的组件。这特别难,因为.mxml组件不能有我在模型中传递的构造函数。

我在考虑让每个组件向其父级询问该模块,直到组件拥有它。这将要求每个组件都实现了该接口,并且对我来说感觉有点不舒服。

有没有人知道在组件中创建实例变量的方法,以便可以创建多个组件,还可以在整个组件中轻松共享该模型?

1 个答案:

答案 0 :(得分:0)

最新的Swiz版本(1.0.0)可以解答这个问题。您现在可以在项目中创建多个Swiz实例并设置父子关系。模块支持页面是他们最好解释的地方(http://swizframework.jira.com/wiki/display/SWIZ/Module+Support),但实际上你不必使用模块,任何父子关系都可以工作。

请记住,为了防止每个事件处理程序响应来自子视图的事件,您需要将EventHandler范围设置为local,例如:

[EventHandler( event="TestEvent.SAVE_USER_REQUESTED", scope="local")]
public function handleEvent(event:Event):void {
    //do stuff
}