2011-01-23 3 views
0

컨텍스트 메뉴로 사용하는 linkbuttons가 포함 된 mx : TitleWindow를 기반으로 구성 요소를 만들었습니다.텍스트가 데이터 기반이지만 프런트 엔드에서 가시성을 제어하는 ​​링크 버튼을 만들려면 어떻게해야합니까?

TitleWindow 성분이 같은 링크 버튼을 포함

[Bindable] 
private var _showEmailThis:Boolean = false; 

[Bindable] 
private var _showApproveThis:Boolean = false; 

[Bindable] 
private var _showReviewThis:Boolean = false; 

<mx:LinkButton id="lnkEmailThis" 
       visible="{_showEmailThis}" 
       includeInLayout="{_showEmailThis}" 
       click="lnkEmailThis_click()" 
       label="Email this!" /> 

<mx:LinkButton id="lnkApproveThis" 
       visible="{_showApproveThis}" 
       includeInLayout="{_showApproveThis}" 
       click="lnkApproveThis_click()" 
       label="Approve this!" /> 

<mx:LinkButton id="lnkReviewThis" 
       visible="{_showReviewThis}" 
       includeInLayout="{_showReviewThis}" 
       click="lnkReviewThis_click()" 
       label="Review this!" /> 

컴포넌트는 많은 링크를 포함하고, 동일한 애플리케이션에서 다수의 모듈에 의해 다시 사용된다.

각 모듈 내에서이 구성 요소는 사용자가 DataGrid에서 행을 클릭 할 때 사용됩니다.

코드는 다음과 같습니다

private function dgRequests_click(event:MouseEvent):void 
{ 
    menu.showApproveThis = true; 
    menu.showReviewThis = true; 
} 

"성능"모듈에서 :

private function dgPerformance_click(event:MouseEvent):void 
{ 
    menu.showEmailThis = true; 
    menu.showReviewThis = true; 
} 

당신이 볼 수 있듯이, 개별 linkbuttons의 가시성 "요청"모듈에서

부울 속성을 설정하여 각 모듈 내에서 제어됩니다.

렌더러를 사용하기 위해이 구성 요소를 변경하는 경우 각 모듈의 코드에서 링크 버튼의 가시성을 제어 할 수 있습니다 (링크마다 기능이 다르지만 각 링크가 각 모듈에서 사용되는 것은 아닙니다) ? 참고 : 백엔드에서 어느 모듈이 어떤 링크를 사용하는지 알 수 없습니다. 이것은 각 모듈의 actionscript 파일 내 프런트 엔드에 설정됩니다.

예를 들어, XML은 다음과 같습니다 경우 :

<links> 
    <link> 
     <label>Email This</label> 
     <visible>_showEmailThis</visible> 
    </link> 
    <link> 
     <label>Approve This</label> 
     <visible>_showApproveThis</visible> 
    </link> 
    <link> 
     <label>Review This</label> 
     <visible>_showReviewThis</visible> 
    </link> 
</links> 

와 나는이 같은 모듈에 표시 할 이메일의 링크 설정 :

private function dgPerformance_click(event:MouseEvent):void 
{ 
    menu.showEmailThis = true; 
} 

를 어떻게 그것을 적용해야합니까? 해당 구성 요소를 사용하는 모듈에서 구성 요소의 항목 렌더러 내에서 링크 버튼의 가시성을 제어하는 ​​방법이 있습니까?

답변

0

이렇게 보이지 않습니다.

1

나는 당신의 질문을 올바르게 이해하지 못합니다. 그러나 여러 속성 값을 사용하여 여러 번 순차적으로 반복하는 구성 요소 (또는 그룹)가 있으면 mx : Repeater를 사용해야합니다.

어도비의 docs on Repeater

(I 강하게 설치하고 사용하는 것이 좋습니다) TourDeFlex에서 라이브 예도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 항목 렌더러가있는 목록뿐만 아니라 리피터도 사용했습니다. 그게 어려움이 아닙니다. 구성 요소에는 각 링크를 표시할지 여부를 제어하는 ​​부울 속성이 있습니다. 특정 링크를 표시하려면 해당 링크에 해당하는 구성 요소의 속성이 모듈에서 true로 설정됩니다 (질문의 click 이벤트 참조). 이를 고려하여이 구성 요소를 데이터 기반으로 만들 수 있습니까? 어떻게 든 데이터 소스의 구성 요소에 부울 값을 설정해야합니다. – Zesty

+1

[]를 사용하여 속성에 액세스 할 수 있습니다. yourComponent [ "_ showEmailThis"] = true; 다시 한 번 강조해 주시면 조금 더 명확하게 설명해주십시오. :) – Nek

+0

도와 주신 것에 대해 다시 한번 감사드립니다. 내가 성취하려고하는 것을 명확히하기 위해 질문을 다시 말했습니다. 아마도, 백엔드가 모듈이 어떤 링크를 사용하는 그리드를 (성능상의 이유로) 알지 못하는 것일 수도 있습니다. 이것은 각 모듈의 actionscript 파일 내에서 설정됩니다. 따라서이 데이터는 XML에 나타날 수 없습니다. 구성 요소의 등록 정보는 각 모듈에 의해 설정됩니다. 그럼, 어떻게 구성 요소를 사용하는 모듈에서 구성 요소의 렌더러 내에서 링크 버튼의 가시성을 제어 할 수 있습니까? – Zesty

관련 문제