2010-03-09 2 views
0

MVC 용 Adobe Flex 프로젝트에서 MATE를 사용하고 있습니다. 우리 페이지 중 하나에는 사용자가 RPC에서 제공하는 정보를 표시하는 대화 상자 창이 있습니다. 이 대화 상자가 나타나는 페이지는 표시되는 데이터와 관련이 없으므로 이것은 별도의 모델입니다. 대화 상자 창을 만들고, 사용자가 볼 수 있도록 만들고, 모델의 데이터를 삽입하는 MATE 매핑 파일을 어떻게 만듭니 까?Flex-Mate, 모델을 사용하여 PopUp (Dialog)을 작성하는 방법

읽어 주셔서 감사합니다.

답변

2

접근 방식을 찾은 것처럼 보이지만 다른 아이디어에 관심이있는 경우 메이트 포럼에서 메이트에서 팝업에 접근하는 방법에 관한 정말 좋은 스레드가 있습니다. 그것은 몇 가지 예제 코드를 포함하고 설명 관련된 모범 사례를 왜 어떤 선택이 이루어지고있다 :

Converting app with popups to Mate << Mate Forums

내가 제대로 이해하면, 여기에 (스레드에서 적응) 당신이 필요로 할 몇 가지 코드입니다. 뷰에 RPC 호출 결과를 삽입하고 (보기가 해당 데이터를 표시하는 방법을 알지 못하는지도 유지) 데이터가있을 때마다보기가 팝업을 작성하고 데이터가 없을 때마다 팝업을 제거합니다. 스레드는이 코드의 대부분을 더 설명합니다.

EventMap :

<Injectors target="{PopupParentView}"> 
    <PropertyInjector destinationKey="rpcData" 
         source="{FooManager}" sourceKey="rpcData" /> 
</Injectors> 

PopupParentView : ...

private var popup : UIComponent; 

private var rpcData : Object; 

private function onPreinitialize(event : Event) : void { 
    BindingUtils.bindSetter(rpcDataChanged, this, "rpcData"); 
} 

private function rpcDataChanged(value : Object) : void { 
    invalidateProperties(); 
} 

override protected function commitProperties() : void { 
    // two mutually exclusive branches: either the property can be interpreted as "show the popup" 
    // and the popup doesn't exist, or we shouldn't show the popup, but it does exist. all other 
    if (rpcData != null && popup == null) { 
     popup = PopUpManager.createPopUp(...); 
    } else if (rpcData == null && popup != null) { 
     // make sure to set the popup property to null 
      PopUpManager.removePopUp(popup); 
      popup = null; 
    } 
} 
</Script> 
... 
+0

+1하지 대답,하지만 좋은 출발점. 감사! – davidemm

+0

예. 좋은 지적입니다. (이전에 사용했던 것처럼) 스레드에서 코드를 가져 왔습니다. 이것이 도움이되는지 알려주십시오. – Brian

+0

도움을 주셔서 감사합니다 Brian! 모든 비주얼 구성 요소를 상속받지 않는 맨손 ActionScript 클래스를 만들었으므로 답변에 설명 된대로 popUpManager를 처리해야합니다. 다른 사람이이 방법을 사용하면 MATE에서 FlexEvent.INITIALIZE 이벤트를 catch하고 핸들러 내에서 MATE ObjectBuilder 태그를 사용하여 자동으로 생성되지 않으므로 만든 객체의 인스턴스를 인스턴스화해야합니다 보기의. – davidemm