2011-01-23 10 views
0

我已经制作了一个基于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; 
} 

正如你所看到的,个人了LinkBut​​ton的知名度通过设置布尔属性在每个模块中进行控制。

如果我改变这个组件来使用渲染器,我怎样才能控制每个模块中代码中链接按钮的可见性(有超过一百个链接具有不同的功能 - 并不是每个链接都将在每个模块中使用) ? 注意:从后端不知道哪个模块使用哪个链接的网格。这在每个模块的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

我不太确定我是否理解你的问题。但是,如果你有一个组件(或一组'em)按顺序重复多次使用不同的属性值,你应该使用mx:Repeater。

Adob​​e的docs on Repeater

也有在TourDeFlex一个活生生的例子(我强烈建议安装和使用)。

+0

感谢您的回复,Nek。我使用过中继器以及项目渲染器的列表。这不是困难。该组件具有布尔属性来控制是否显示每个链接。要显示特定的链接,与该链接对应的组件上的属性在模块中设置为true(请参阅问题中的单击事件)。考虑到这一点,是否有可能使这个组件数据驱动?它需要以某种方式设置来自数据源的组件中的布尔值。 – Zesty 2011-01-23 11:06:48

相关问题