2016-10-19 17 views
0

У меня есть список в mxml. Мне нужно показать меню, когда пользователь нажимает на элемент в списке. В меню отобразятся некоторые действия над элементом, который был нажат.Как получить ссылку на список списка Flex в событии Mouse Down

Мне также нужно сделать нажатым элемент выбранного элемента в списке. Поэтому мне нужна ссылка на список. Я не могу найти нормальный способ попасть в список, поэтому я сделал это:

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

Я не уверен, но не только установит выбранное свойство в OnMouseDown в ItemRenderer в сделать трюк?

selected = true; 

Если нет, проверьте, если это поможет вам список:

var myList:List = owner as List; 

Другой подход должен был бы создать пользовательское событие, содержащее ваш деталь и выстрелить из ItemRenderer. Затем прослушайте это событие в списке и установите для свойства selectedItem значение, которое вы получили в событии

+0

, поскольку список работал! Большое спасибо! – Asimov