Flex 访问自定义组件的子属性

Posted

技术标签:

【中文标题】Flex 访问自定义组件的子属性【英文标题】:Flex accessing custom component's children properties 【发布时间】:2013-06-17 03:39:20 【问题描述】:

有没有办法从 mxml 而不是从 actionscript 访问自定义组件的子属性。

例如,我有一个组件“A”

<s:Group>
   <mx:UIComponent id='childA'/>
   <mx:UIComponent id='childB'/>
</s:Group>

在应用程序的某个地方我想做这样的事情

<s:HGroup>
   <components:A>
      /*I want to access properties of this children objects*/
      <childA />
      <childB color="0xFFFFFF"/>
   </components:A>

   <components:A>
      /*And here too*/
      <childA />
      <childB color="0x000000"/>
   </components:A>
</s:HGroup>

【问题讨论】:

【参考方案1】:

您可以在 ActionScript 中执行此操作;但不是在 MXML 中。在 ActionScript 中:

componentAInstance.childA.width = 20;
componentAInstance.childB.setStyle('color',0xFFFFFF);

这就是我们所说的可怕的封装中断;因为“父级”不需要知道其子级的实现细节。

ComponentA 应该知道如何调整自己子项的大小和位置;在此追逐 childA 和 childB。它不需要 ComponentA 的父级的帮助。

阅读这篇关于component's should communicate with each other 的博文可能会让您受益匪浅。

【讨论】:

是的,但我想知道 mxml 方式。问题是:我有特定的加载器组件,它有超过 4 个外观参数和一些包含该加载器的组件。该组件可以占据应用程序的整个屏幕,也可以是 32 x 32 像素。我正在考虑从 mxml 控制加载程序的外观,而无需从代码中进行太多自定义。我想我现在必须通过容器组件传递这些属性。 @Komlev 为什么不将这 4 个参数设置为父对象的属性。设置后,如果孩子存在,它可以将属性应用于孩子。 这是一项额外的工作,我知道它很少但它就在那里,我想知道有没有一种方法可以不用交替父类。我希望 mxml 能给我一些“语法糖”。 我不确定你的意思是我建议的答案是额外的工作还是@SunilD。评论是。从推测的角度来看,SunilD 的方法是正确的。

以上是关于Flex 访问自定义组件的子属性的主要内容,如果未能解决你的问题,请参考以下文章

flex 自定义组件

Flex 4 从自定义组件调度自定义事件(为啥 flex 将自定义事件转换为 mouseevent)

Flex 自定义ToolTip并动态创建应用

如何创建自定义 Flex 4 组件

如何在 Flex 中获取自定义组件的句柄?

具有更多内部功能的 Flex 自定义组件