我已經制作了一個基於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!" />
此組件含有大量的鏈接和在相同的應用程序被重新使用由多個模塊。
在每個模塊中,當用戶單擊數據網格中的一行時使用此組件。
的代碼看起來是這樣的:
在 「請求」 模塊:
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;
}
正如你所看到的,個人了LinkButton的知名度通過設置布爾屬性在每個模塊中進行控制。
如果我改變這個組件來使用渲染器,我怎樣才能控制每個模塊中代碼中鏈接按鈕的可見性(有超過一百個鏈接具有不同的功能 - 並不是每個鏈接都將在每個模塊中使用) ? 注意:從後端不知道哪個模塊使用哪個鏈接的網格。這在每個模塊的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;
}
我怎樣才能生效?有沒有一種方法來控制使用該組件的模塊中的組件中的項目渲染器中的鏈接按鈕的可見性?
感謝您的回覆,Nek。我使用過中繼器以及項目渲染器的列表。這不是困難。該組件具有布爾屬性來控制是否顯示每個鏈接。要顯示特定的鏈接,與該鏈接對應的組件上的屬性在模塊中設置爲true(請參閱問題中的單擊事件)。考慮到這一點,是否有可能使這個組件數據驅動?它需要以某種方式設置來自數據源的組件中的布爾值。 – Zesty 2011-01-23 11:06:48