2012-01-26 2 views
0

나는 간단한 TabbedViewNavigatorApplication을 만들었습니다. 두 개의 탭은 새로운보기를로드하는 대신 텍스트와 이메일을 각각 전송합니다. 그래서 새로운 뷰를 푸시하는 기본 동작을 방지해야합니다.보기에 preventDefault 사용

설명서에 a view can cancel a navigation operation by canceling its FlexEvent.REMOVING이 표시됩니다. 그러나 분명히 FlexEvent에 대한 상수는 없습니다. 그러나 ViewNavigatorEvent에 대해서는 첫 번째 링크에서 더 멀리 설명되어 있습니다. 그래서 여기

내가있어 무엇을,하지만 난 어느 쪽도 추적 문을 참조하거나 탐색을 중지 할 수 있어요 : 당신은

vwText.addEventListener(ViewNavigatorEvent.REMOVING, doSomething); 

아웃 취할 필요

<?xml version="1.0" encoding="utf-8"?> 
<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160" creationComplete="completeHandler(event)"> 
<fx:Script> 
    <![CDATA[ 

     import mx.events.FlexEvent; 

     import spark.events.ViewNavigatorEvent; 

     private function completeHandler(e:Event):void 
     { 
      vwText.addEventListener(ViewNavigatorEvent.REMOVING, removingHandler); 
     } 

     private function removingHandler(e:ViewNavigatorEvent):void 
     { 
      trace("removingHandler::"); 
      e.preventDefault(); 
     } 

     private function doSomething(e:MouseEvent):void 
     { 
      trace("Do Something"); 
     } 

    ]]> 
</fx:Script> 
<s:ViewNavigator id="vwText" label="Text" width="100%" height="100%" click="doSomething(event)" firstView="views.SendasTextView"/> 
<s:ViewNavigator label="Email" width="100%" height="100%" firstView="views.SendasEmailView"/> 
<s:ViewNavigator label="History" width="100%" height="100%" firstView="views.HistoryView"/> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

답변

1

을 스크립트 블록의

함수 내부에 있어야합니다. creationComplete 이벤트를 사용하여 해당 수신기를 추가하는 init 함수를 만들 수 있습니다.

+0

Doh! 예, 그것을 반영하고 위의 코드를 편집했습니다. 그래도 작동이 안되는. 흔적도 둘 중 하나를 실행 중입니다. – David