【问题标题】:Flex accessing custom component's children propertiesFlex 访问自定义组件的子属性
【发布时间】: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 width="20"/>
      <childB color="0xFFFFFF"/>
   </components:A>

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

【问题讨论】:

    标签: apache-flex actionscript flex4.5 mxml


    【解决方案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 的方法是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2018-05-31
    相关资源
    最近更新 更多