我们如何从主mxml访问itemRenderer中的组件?

时间:2010-07-14 14:02:54

标签: flex itemrenderer

我有一个itemRenderer用于列表,我只是分别显示项目及其详细信息。我想保持细节不可见,并在我的主mxml文件中有一个按钮,显示详细信息,单击该按钮会使细节可见。

所以,我的问题是在clickHandler中如何从主mxml访问itemRenderer中的details属性?

提前感谢您的帮助

3 个答案:

答案 0 :(得分:0)

我在main上有一个布尔值,这是itemRenderer关闭的。访问列表的itemRenderers不会被推荐,因为它们被回收,并且无法保证操作。

有关说明,请参阅http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

答案 1 :(得分:0)

有几种方法可以解决这个问题。

一种是使用包含“ShowDetails”值的全局Singleton对象。每个itemRenderer都可以访问该对象并更改其设置。 Cairngorm的ModelLocator是通常以这种方式使用的单身人士的一个例子。我相信swiz有类似的东西。如果需要,你也可以自己动手。

你可以尝试扩展List类List将itemsRenderers保存在一个数组中,我相信它是受保护的。您必须扩展List,并将此受保护的数组公开。然后,您将能够访问itemRenderers列表并直接修改它们的属性。

但是,我不确定我会推荐这两种方法。 itemRenderer确实应该根据它显示的数据选择要显示的内容;不是一些全局变量。您是否可以更改dataProvider中的对象并相应地更新itemRenderer?这是第三种选择;虽然我不确定它是否比前两种方法更好或更差。

答案 2 :(得分:0)

你可以在DataProvider数组中有一个名为'show'的变量设置为false。在itemrenderer中,将details组件的visible属性绑定到data.show。

按下show按钮时,遍历dataProvider数组,并将'show'属性设置为true。这将有效

BISH