2016-10-19 17 views
0

나는 mxml에 목록을 가지고 있습니다. 사용자가 목록에서 항목을 길게 누르면 메뉴를 표시해야합니다. 메뉴는 눌려진 항목에 대한 몇 가지 조치를 표시합니다.마우스 다운 이벤트에서 플렉스리스트 목록에 대한 참조를 얻는 방법

또한 내가 선택한 항목을 목록에서 선택한 항목으로 만들어야합니다. 그래서 목록에 대한 참조가 필요합니다. 목록에 올 수있는 정상적인 방법을 찾지 못해 이렇게했습니다.

물론 끔찍한 점은 어느 것입니까? 나는 목록에 대한 참조를 얻는 더 좋은 방법을 찾고있다. 잘 모르겠어요하지만 단지 트릭을 수행하는 itemRenderer의하면 onMouseDown에서 선택한 속성을 설정하지 않습니다

<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, 루트 객체는 List가 작동되면서 – Asimov

답변

2

: 여기

목록 내 코드?

selected = true; 

되지 않은 경우,이 당신에게 당신의 목록을 얻을 것이다 있는지 확인 :

var myList:List = owner as List; 

또 다른 방법은 항목을 포함하는 사용자 정의 이벤트를 생성하고 itemRenderer를에서 발사하는 것입니다. 그런 다음 목록에서 해당 이벤트를 수신하고 selectedItem 속성을 이벤트에있는 항목으로 설정하십시오.

+0

뷰가됩니다! 고마워요! – Asimov