强制按钮更新其标签

时间:2009-11-24 06:05:09

标签: flex

我创建了一个自定义组件来覆盖linkBut​​ton,使其表现如果找到一个存在的值,它将显示为“已添加”。

默认情况下,按钮标签是“添加到购物车”,我尝试在uHandler上尝试多次试错后无法使按钮变为“已添加”,我认为,COMPLETE,ENTER_FRAME,CREATION_COMPLETE甚至无法更新标签。

public class Btn extends LinkButton{
    public function Btn(){
      super();
      this.addEventListener(MouseEvent.CLICK, labelHandler);
      this.addEventListener(FlexEvent.INITIALIZE, loopArray);
      this.addEventListener(FlexEvent.PREINITIALIZE, cHandler);
      this.addEventListener(Event.COMPLETE, uHandler);
    }
...

private var disableLabel:int = 0;
    private function uHandler(event:Event):void {
        trace("creation");
        if(disableLabel == 1){
            super.label = "Already added";
            disableLabel = 0;
        }
    }

请建议。

2 个答案:

答案 0 :(得分:1)

您甚至不必扩展LinkButton类来更改其标签。你可以打电话:

linkBtnInstanceName.label = "Added";

如果事件侦听器位于Repeater中,则可以使用它。检查此代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Repeater id="rp">
        <mx:dataProvider>
            <mx:Array>
                <mx:String>ASD</mx:String>
                <mx:String>QWE</mx:String>
                <mx:String>ZXC</mx:String>
                <mx:String>123</mx:String>
            </mx:Array>
        </mx:dataProvider>
        <mx:LinkButton label="{rp.currentItem}" click="onClick(event);"/>
    </mx:Repeater>
    <mx:Script>
        <![CDATA[
            private function onClick(event:MouseEvent):void
            {
                //this works
                LinkButton(event.currentTarget).label = "Clicked";
            }
        ]]>
    </mx:Script>
</mx:Application>

答案 1 :(得分:0)

我是未知的(谷歌),你只是使用creationcomplete给了我间接的想法,而不需要扩展组件,它确实显示了我需要的东西。谢谢!

我几乎试图射击你,但设法理解你试图在试错后解释的内容。