2016-10-19 65 views
0

我在mxml中有一個列表。當用戶長按列表中的項目時,我需要顯示一個菜單。該菜單將顯示已按下的項目的一些操作。如何在Mouse Down事件中獲取對Flex List列表的引用

我還必須將按下的項目作爲列表中的選定項目。所以我需要一個參考清單。我找不到一個正常的方式來到列表中,所以我這樣做:

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> 
+0

列表是mxml文件中的頂層對象嗎? – CyanAngel

+0

@CyanAngel,根對象是一個查看 – Asimov

回答

2

我不知道,但不會僅僅設置itemRenderer的onmousedown事件所選擇的屬性做的伎倆?

selected = true; 

如果沒有,檢查,如果這將讓你列表:

var myList:List = owner as List; 

另一種方法是創建一個包含您的項目自定義事件,並從火的itemRenderer它。然後在列表中監聽該事件,並將selectedItem屬性設置爲事件中獲得的項目

+0

所有者作爲List工作!非常感謝! – Asimov

相關問題