Extjs 4 : how to change progressbar colour dynamically?

标签 extjs colors progress-bar extjs4

问题 下面回答

您好,我正在寻找一种简单的方法来更改进度条的颜色,我正在尝试用它做什么,看起来像这样:

function (progressBar, value) {
    if (value < 40) {
        progressBar.setColor('red');
    } else if (value >= 40 && value <= 80) {
        progressBar.setColor('yellow');
    } else {
        progressBar.setColor('green');
    }
}

然后,通过使用progressbar 已有的方法、setUI 或其他可以工作的方法通过样式更改颜色的某种方法也将很棒。

谢谢。

解决方案

我找到了这样做的方法,在这里,我创建了一个自定义进度条,在那里我使用监听器更新,然后这个将接收进度条的实际值,而进度条本身,我取的是 obj并找到进度条的样式,在那里我用我想要的十六进制颜色修改 backgroundColor 和 borderRightColor 并将 backgroundImage 设置为空 URL 然后它将允许显示背景颜色。

我还创建了发送默认颜色的选项。

这是代码:
Ext.define("progressBarCustom", {
    extend: 'Ext.ProgressBar',
    alias: 'widget.progressBarCustom',
    max: null,
    ave: null,
    min: null,
    color: null,

    initComponent: function () {
        var me = this;
        me.width = 300;
        me.margin = '5 5 0 5';
        me.callParent(arguments);
    },

    listeners: {
        update: function (obj, val) {
            if (this.max != null && this.ave != null && this.min != null) {
                if (val * 100 <= this.min) {
                    obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#FF0000";
                    obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#FF0000";
                    obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
                } else if (val * 100 <= this.ave) {
                    obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#FFFF00";
                    obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#FFFF00";
                    obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
                } else {
                    obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#009900";
                    obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#009900";
                    obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
                }
            } else if (this.color != null) {
                obj.getEl().child(".x-progress-bar", true).style.backgroundColor = this.color;
                obj.getEl().child(".x-progress-bar", true).style.borderRightColor = this.color;
                obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
            }
        }
    }
});

然后,如果您要创建一个带有颜色更改的新进度条,则代码如下:
Ext.create('progressBarCustom', {
    min : 0.20,
    ave : 0.60,
    max : 0.80
});

或者只是使用默认颜色:
Ext.create('progressBarCustom', {
    color : "#4D0099"
});

任何建议都会收到,谢谢:)。

最佳答案

我建议添加一个监听器来调用你的函数 move事件,因为这似乎包含您需要的职位。 Documentation link .

对于 setColor 方面,我相信您想设置组件 style元素。 Documentation link .希望有帮助。

关于Extjs 4 : how to change progressbar colour dynamically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380380/

相关文章:

css - 在 css 中更改链接的颜色

javascript - 如何在 CSS 宽度变化时实现平滑的 CSS 动画?

jquery - Rails 3 + 延迟作业 : how can I keep track of progress of a task (e. g。登陆页面上的进度条)?

android - 带 alpha channel 的位图着色器。 (Alpha 正在画黑..?)

android - Android 中的 getColor() 和 getColorStateList() 有什么区别

javascript - 显示一个进度条,显示表单提交的进度

javascript - 在 Ext 3.4 框架上使用 debounce

extjs - 分机 JS 4 : No reloading of stores

javascript - 我怎样才能使 extjs 中的 rowediting 插件在我点击取消时不添加行?

extjs - ExtJS GridPanel中的垂直滚动条