【发布时间】:2011-08-25 16:08:47
【问题描述】:
我有一个 Spark 列表,其中包含一个由填写的表单应用程序列表组成的数据提供者。向每个列表项(表单应用程序)添加按钮的最佳方法是什么?此按钮将被命名为 Open,并将导航到指定的表单应用程序。
提前感谢您的任何建议!
【问题讨论】:
标签: apache-flex actionscript-3
我有一个 Spark 列表,其中包含一个由填写的表单应用程序列表组成的数据提供者。向每个列表项(表单应用程序)添加按钮的最佳方法是什么?此按钮将被命名为 Open,并将导航到指定的表单应用程序。
提前感谢您的任何建议!
【问题讨论】:
标签: apache-flex actionscript-3
这与@www.Flextras.com 所说的类似,所以我不再赘述。但是,我将添加一个示例和一两件事。
您的自定义 ItemRenderer 可能如下所示:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
private function requestForm():void {
var event:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK);
event.index = itemIndex;
event.item = data;
owner.dispatchEvent(event);
}
]]>
</fx:Script>
<s:Label id="labelDisplay" verticalCenter="0" />
<s:Button right="0" label="open" verticalCenter="0" click="requestForm()" />
</s:ItemRenderer>
与 Flextras 的回答不同的两点:
owner 上调度事件,它
实际上就是包含这个 ItemRenderer 的 List。因为这,
你不需要冒泡事件。现在要在单击按钮时打开表单,请执行以下操作:
myList.addEventListener(ItemClickEvent.ITEM_CLICK, openForm);
private function openForm(event:ItemClickEvent):void {
trace("open " + event.item.toString());
}
【讨论】:
dispatch 中的owner 事件...谢谢! !
使用自定义 itemRenderer,该 itemRenderer 将按钮与您的 itemRenderer 数据一起显示(表单应用程序)。
当按钮被点击时;调度一个冒泡的自定义事件。您可能必须为单击此按钮所代表的表单应用程序添加一些标识符。
使用 addEventListener() 方法监听列表类上的事件。您不能使用 MXML,因为您将使用列表默认元数据中未定义的自定义事件。
在您的侦听器中,执行相关的 UI 更改以显示您的表单应用程序。
【讨论】: