javascript - ExtJs 按钮 - 更改点击监听器上的文本和 cls

标签 javascript extjs extjs3

我有一个 extjs 3.4 按钮,其作用类似于切换按钮,请参阅下面的代码:

    this.advanceFilterToggleBtn = {
    xtype: 'button',
    id: 'advancedSearchLink',
    text: 'More Filter Options',
    iconCls: 'button-more-filter-options',
    width: '150',
    listeners: {
        click: function(btn, el){
            // do stuff
            if(this.text === 'More Filter Options'){
                // do some more stuff
                this.text = 'Less Filter Options';
                this.iconCls = 'button-less-filter-options';
            }else {
                this.text = 'More Filter Options';
                this.iconCls = 'button-more-filter-options';
            }
        }
    }

按钮上的文本和类别发生了变化,我可以确认这一点,但显示并未更新。这意味着它仍然显示相同的初始文本和向下的 V 形。我在 chrome 开发工具中有断点,并且 if 和 else block 都被击中。

我尝试使用通过单击监听器传递的 btn 对象的 setText 和 setIconCls 而不是使用“this”,但它不起作用。在这种情况下,else block 不会被击中。

我尝试将 this.text 和 this.iconCls 移动到 if 和 else block 的开头,但没有成功。

感谢任何帮助。

谢谢

最佳答案

if(btn.getText() === 'More Filter Options'){
    advForm.expand(true);
    filterPanel.setHeight(220);
    srTab.doLayout();
    btn.setText('Less Filter Options');
    btn.setIconCls('button-less-filter-options');
} else {
    advForm.collapse();
    filterPanel.setHeight(130);
    srTab.doLayout();
    btn.setText('More Filter Options');
    btn.setIconCls('button-more-filter-options');
}

关于javascript - ExtJs 按钮 - 更改点击监听器上的文本和 cls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433256/

相关文章:

javascript - 在不接触 DOM 的情况下更新应用程序的状态 - Vue.js

javascript - React JS 自定义组件动画

javascript - 尝试使用 axios 访问 Wikipedia Api 但出现 CORS 策略错误

javascript - 代码编译后如何使用nodemon?

javascript - 将文本字段聚焦在列表内

extjs - 如何最后添加两行网格

javascript - 如何从 ExtJS5 中的存储中获取字段

javascript - 如何选择任何div内的下拉列表?

javascript - Extjs : Show data on Grid

javascript - 禁用 Ext.form.ComboBox 中的某些项目