如何在 Mouse Down 事件中获取对 Flex List 列表的引用
How to get a reference to the list of a Flex List in Mouse Down event
我有一个 mxml 格式的列表。当用户长按列表中的项目时,我需要显示一个菜单。菜单将显示对已按下的项目的一些操作。
我还必须使按下的项目成为列表中的选定项目。所以我需要一个列表的参考。我找不到进入列表的正常方法,所以我这样做了:
var list:Object = event.currentTarget.parent.parent.parent.parent.parent
这当然很可怕。我正在寻找一种更好的方法来获取对列表的引用。
这是我的列表代码:
<s:List id="catList" x="0" y="0" width="100%" height="100%" click="selectItemHandler(event)">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer
styleName="labelFontStyle"
messageStyleName="descriptionFontStyle"
labelField="labelField"
messageField="descriptionField"
dataChange="onDataChange(event)"
mouseDown="onMouseDown(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function onMouseDown(event:MouseEvent):void
{
try
{
var tg:Object = event.target;
var selectedItem:Object = event.currentTarget.data;
if (selectedItem != null)
{
// Here I need to set the selectedItem property of
// the owning list.
// I don't know how to get to the list so I did this.
var list:Object = event.currentTarget.parent.parent.parent.parent.parent;
list.selectedItem = selectedItem;
}
} catch (e:Error) {}
}
]]>
</fx:Script>
</s:IconItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
我不确定,但不会只在 itemrenderer 的 onMouseDown 中设置选定的 属性 来解决问题吗?
selected = true;
如果没有,请检查这是否会为您提供列表:
var myList:List = owner as List;
另一种方法是创建一个包含您的项目的自定义事件并从 itemrenderer 触发它。然后在列表中监听该事件并将 selectedItem 属性 设置为您在事件中获得的项目
我有一个 mxml 格式的列表。当用户长按列表中的项目时,我需要显示一个菜单。菜单将显示对已按下的项目的一些操作。
我还必须使按下的项目成为列表中的选定项目。所以我需要一个列表的参考。我找不到进入列表的正常方法,所以我这样做了:
var list:Object = event.currentTarget.parent.parent.parent.parent.parent
这当然很可怕。我正在寻找一种更好的方法来获取对列表的引用。
这是我的列表代码:
<s:List id="catList" x="0" y="0" width="100%" height="100%" click="selectItemHandler(event)">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer
styleName="labelFontStyle"
messageStyleName="descriptionFontStyle"
labelField="labelField"
messageField="descriptionField"
dataChange="onDataChange(event)"
mouseDown="onMouseDown(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function onMouseDown(event:MouseEvent):void
{
try
{
var tg:Object = event.target;
var selectedItem:Object = event.currentTarget.data;
if (selectedItem != null)
{
// Here I need to set the selectedItem property of
// the owning list.
// I don't know how to get to the list so I did this.
var list:Object = event.currentTarget.parent.parent.parent.parent.parent;
list.selectedItem = selectedItem;
}
} catch (e:Error) {}
}
]]>
</fx:Script>
</s:IconItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
我不确定,但不会只在 itemrenderer 的 onMouseDown 中设置选定的 属性 来解决问题吗?
selected = true;
如果没有,请检查这是否会为您提供列表:
var myList:List = owner as List;
另一种方法是创建一个包含您的项目的自定义事件并从 itemrenderer 触发它。然后在列表中监听该事件并将 selectedItem 属性 设置为您在事件中获得的项目