2009-11-24 84 views
0

我创建了一个自定义组件来覆盖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; 
     } 
    } 

请指教。

+0

更新了代码为转发器 – Amarghosh 2009-11-24 09:41:44

回答

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> 
+0

的帖子它不工作的方式,我相信dispatchevent是唯一的解决方案,因为按钮是在转发器组件内 – Proyb2 2009-11-24 09:09:03

+0

按钮是在一个转发器内 - 感谢提问中的问题。 – Amarghosh 2009-11-24 09:27:47

+0

使用'LinkBut​​ton(event.currentTarget).label =“添加”;' – Amarghosh 2009-11-24 09:28:35

0

我未知(谷歌),你只给我用creationcomplete无需延长零部件的间接想法,这也显示正是我需要的。谢谢!

我几乎试图把你击退,但设法理解你在试错后想要解释什么。