2012-10-01 105 views
1

我使用Sencha Touch 2,我有一個按鈕聲明,在事件點擊我想改變它的文本屬性。如何以編程方式更改按鈕的Text屬性?

這是我的代碼,不工作..任何想法如何解決它?

var accessibilityButton = { 
     id: 'accessibilityButton', 
     xtype: 'button', 
     ui: 'custom-btn-confirm', 
     maxWidth: '360px', 
     centered: true, 
     flex: 1, 
     scope: this, 
     style: 'color: #ffffff', 
     text: 'Larger Text', 

     handler: function changeStyle() { 

      // Swap the CSS for Accessibility    
      var i, a, url, btn; 
      btn = document.getElementById('accessibilityButton'); 

      for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
       if(a.getAttribute("rel").indexOf("style") != -1) { 
        url = a.href; 

        if(url.lastIndexOf('app.css') !== -1) { 
         a.href = 'resources/css/app-accesibility.css';   
         btn.innerHTML = 'Default Text'; 
        } 
        else { 
         a.href = 'resources/css/app.css'; 
         btn.innerHTML = 'Larger Text'; 
        } 
       } 

      } 

     } 

    }; 

回答

2

你的處理函數應該得到所謂的按鈕組件的範圍,所以只是嘗試做這樣的事情,而不是:

handler: function changeStyle() { 
    this.setText('text'); 
} 

編輯

,或者如果你已經改變範圍:

scope: this, 
handler: function changeStyle(btn) { 
    btn.setText('text'); 
} 

否第二個版本一直在運作。

+0

我已經嘗試過不起作用。它說對象沒有方法...任何想法? – GibboK

+0

哦,我沒有注意到你將按鈕上的範圍設置爲別的東西。你可以擺脫範圍或嘗試: Ext.getCmp('accessibilityButton')。setText('Default Text'); – chinabuffet

+0

或者,您更容易將處理函數的簽名更改爲changeStyle(btn),然後執行btn.setText('Default Text'); –

相關問題