2009-11-24 99 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無需延長零部件的間接想法,這也顯示正是我需要的。謝謝!

我幾乎試圖把你擊退,但設法理解你在試錯後想要解釋什麼。