为ext js 4中的按钮设置'minWidth'默认配置

时间:2012-06-20 20:16:36

标签: extjs extjs4

我目前正试图了解ext js 4的主题功能,并且在按钮样式方面遇到了一些麻烦。

使用提供的scss变量设置按钮尺寸是不太可能的,但是有一些javascript配置选项。因为我不想将这些设置应用于每个按钮实例,我一直在寻找一种为按钮类设置'config defaults'的方法。

设置默认高度时,以下方法效果很好:

Ext.button.Button.prototype.height = 15;

不幸的是,这似乎不可能用于'minWidth'配置:

Ext.button.Button.prototype.minWidth = 1; //nope, sorry

有没有办法为'minWidth'设置默认值?

2 个答案:

答案 0 :(得分:1)

如果要在框架中为每个按钮更改它。使用覆盖系统。

应用/重写/ Button.js

Ext.define('App.overrides.Button', {}, function() {
    Ext.override(Ext.button.Button, {
        minWidth: 20
    });
});

<强> app.js

Ext.onReady(function() {
    /*
     * Load Overrides
     */
    Ext.require([
        'App.overrides.Button'
    ]);
});

var app = Ext.Application({.....

我不确定这是多么明智,因为像tab这样的东西从按钮延伸,它可能会产生一些不利影响。但那就是如何做到的。

答案 1 :(得分:1)

简短回答

Ext.override(Ext.panel.Panel, {
    minButtonWidth: 1
});
Ext.override(Ext.button.Button, {
    minWidth: 1
}); 

更长的回答

设置Ext.button.Button.prototype.minWidth = 1;是正确的(更好地使用简短回答中提到的覆盖),但ExtJs内部处理设置Ext.panel.Panel的默认minWidth为75时忽略(参见bridgeToolbars()函数)。因此,如果您使用Panel工具栏之外的按钮,您的初始尝试将起作用。

此外,makeButtons() Ext.window.MessageBox函数中有75个按钮的硬编码minWidth。

在我看来,你应该打开一个bug报告@sencha,因为应该有一个可用的,更全局的设置。

更新:这是使用ExtJS 4.1测试的