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

Apache flex 如何创建可在整个组件中共享的实例模型(可多次创建),apache-flex,actionscript-3,singleton,cairngorm,swiz,Apache Flex,Actionscript 3,Singleton,Cairngorm,Swiz,我正在尝试创建一个模块化结构,它最终将存在于另一个actionscript/flex应用程序中。我在外部应用程序中使用cairngorm,我想在内部应用程序中创建这个新组件的多个实例。Cairngorm不适用于创建多个重复组件,因为模型是单例的 我正在创建的组件是一个伪视频查看器。我希望在这个组件实例中有一个共享模型。我正在努力寻找一种在组件中共享单个模型的方法。如果使用单例模式,则不能创建此组件的多个实例。如果我创建一个实例并让组件确保只有一个实例,那么我很难将模型轻松地传递给所有需要它的组件

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

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

我在考虑让每个组件向其父组件请求模块,直到组件拥有它。这需要每个组件都实现该接口,并且我觉得有点讨厌

有人知道在组件内创建实例变量的方法吗?这样可以创建多个组件,但也可以在整个组件中轻松共享该模型?

最新的Swiz版本解决了这个问题。现在,您可以在项目中创建多个Swiz实例,并设置父子关系。模块支持页面是他们解释得最好的地方,但您实际上不必使用模块,任何父子关系都会起作用

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

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

有趣的是,你用swiz标记了这个问题,尽管swiz标记是对swiz的唯一引用。是否希望有人告诉您应该使用swiz并将模型实例注入特定组件中?:-另一个可行的解决方案是让组件的根元素通过mxml伪注入模型实例。想一想这样可能会奏效,似乎这家伙通过mxml将模型伪注入到表示模型中解决了这个问题:其中BookDetailsPanel是视图,appModel是父组件持有的实例。我将其标记为Swiz,因为我知道Swiz有一个原型概念,虽然不能真正解决问题,但这比Cairngorm的单例方法要好一点。我对Swiz没有太多经验,我们的大部分东西都在Cairngorm,所以我想看看有Swiz想法的人是否遇到过这种情况,并且有一种我在他们的框架中没有见过的方法来做类似的事情。我应该提到我尝试了Swiz解决方案,但原型构造不允许在整个组件中共享,singleton和Cairngorm有着同样的问题,所以我注意到在新的Swiz1.0中,使用Swiz0.6.4尝试了一些东西,在配置中有一个叫做defaultDispatcher的东西,它接受“全局”或“本地”。我没有在上面看到任何文档,但从命名来看,这可能有用,有人用过吗?