2012-10-01 50 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'); –

相关问题