Flex:在一个MXML文件中包含另一个MXML文件是个好主意或设计吗?



我想知道每个组件有一个mxml文件是否是个好主意,然后将这些不同的组件内联在一个mxml文件中,并能够在这些mxml文件之间进行通信?

例如,我有一个overView.mxml,在这,我内联其他mxml文件,其中包含组件,如datagrid,另一个mxml包含可能是一个形式。我是否能够通过访问其id的形式mxml与网格数据通信?

如果我的问题不清楚,请让我知道。我会试着重新表述一下。

是的,这是个好主意。这比创建一个包含所有功能的巨大的MXML或类要好得多。

同时,它带来了一些开销。要在类之间通信(MXML文件只是类),您必须调度事件。包含子组件的父组件可以设置其子组件的公共属性(带或不带数据绑定)。

你应该尽可能地去解耦组件。尽量不要在子组件显式引用父组件的地方编写代码(即:尽量不要使用parent属性)。相反,从子组件调度一个事件,让父组件侦听该事件。

关于您的数据网格和表单的示例:

如果这两个对象之间有很多交互,那么将它们保存在同一个MXML文件中会容易得多。这听起来不像是一个父组件包含子组件的场景。由于这些"兄弟"可能会相互通信,因此将它们放在同一个MXML文件中会更容易。但是,如果事情变得复杂,并且文件增长到超过几百行,那么将它们分开可能会受益。

假设您计划在项目的其他地方使用表单组件,而不是数据网格,那么将它们分开也是有意义的。

关于你的问题:"表单组件将能够通过访问它的id与网格组件通信吗?":

从技术上讲,是的,您可以这样做,但只有通过将表单组件与网格组件紧密耦合才能做到。表单组件可以使用parent属性上升一级并使用网格的id。但是,由于parent属性的类型为DisplayObjectContainer,您必须欺骗编译器,并且您失去了强类型的好处(因为DisplayObjectContainer没有作为网格ID的属性)。因此,虽然这是可能的,但这不是一个好的设计,并且会阻止您在其他地方重用表单组件。

这种紧密耦合违背了创建独立组件的目的。因此,您可以通过调度事件来促进通信,或者将网格和表单放在同一个文档中:)

TLDR:

通常应该尝试创建可重用的组件。所以我通常倾向于这个方向。MXML文件只是类,所有人们在面向对象编程中经常谈论的东西都适用。

最新更新