我想知道为每个组件创建一个mxml
文件是否是个好主意,然后在一个mxml
文件中内联这些不同的组件,并能够在这些mxml
个文件之间进行通信?
例如,我有一个overView.mxml
,在此,我内联其他mxml
文件,其中包含datagrid
等组件,另一个mxml
包含可能是一个表单。我是否能够通过mxml
?
如果我的问题不明确,请告诉我。我会尝试改写它。
非常感谢。
答案 0 :(得分:2)
是的,这是一个好主意。它比创建一个包含所有功能的巨型MXML或类要好得多。
与此同时,它会带来一些开销。要在类之间进行通信(MXML文件只是类),您必须分派事件。包含子组件的父组件可以设置其子组件的公共属性(带或不带数据绑定)。
您应该尝试尽可能地分离您的组件。尽量不要编写子组件明确引用父组件的代码(即:尽量不使用parent
属性)。而是从子组件调度事件并使父级侦听事件。
关于您的数据网格和表单示例:
如果这两个对象之间会有很多交互,那么将它们保存在同一个MXML文件中要容易得多。这听起来不像是一个包含子组件的父组件。由于这些“兄弟姐妹”很可能彼此沟通,因此将它们放在同一个MXML文件中会更容易。但是,如果事情变得复杂并且文件增长到超过几百行,您可能会从分离它们中受益。
假设您计划在数据网格中使用项目中其他位置的表单组件,那么将它们分开也是有意义的。
关于您的问题:“表单组件是否能够通过访问它的ID与网格组件进行通信?”:
从技术上讲,是的,您可以这样做,但只能通过将表单组件与网格组件紧密耦合。表单组件可以使用parent
属性上升一级并使用网格的id。但是由于parent
属性被键入为DisplayObjectContainer
,你必须欺骗编译器并且你失去强类型的好处(因为DisplayObjectContainer
没有属性是ID你的网格)。因此虽然这是可能的,但这不是好的设计,并且阻止您在其他地方重用表单组件。
这种紧密耦合破坏了创建单独组件的目的。因此,您可以通过调度事件或将网格和表单放在同一文档中来促进通信:)
<强> TLDR:强>
您通常应该尝试创建可重用的组件。所以我一般都倾向于那个方向。 MXML文件只是类,人们在面向对象编程中谈论的所有常见内容都适用。