1

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

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

如果我的问题不清楚,请告诉我。我会尝试改写它。

非常感谢。

4

1 回答 1

2

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

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

您应该尝试尽可能多地解耦您的组件。尽量不要在子组件显式引用父组件的地方编写代码(即:尽量不要使用该parent属性)。而是从子组件调度一个事件并让父组件监听该事件。

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

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

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

关于您的问题: “表单组件是否能够通过访问它的 ID 与网格组件进行通信?”:

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

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

TLDR:

您通常应该尝试创建可重用的组件。所以我一般会朝那个方向倾斜。MXML 文件只是类,人们在面向对象编程中谈论的所有常见事物都适用。

于 2013-03-01T05:57:28.030 回答