Ext.js-根据值更改工具栏内的图标

时间:2017-05-01 14:44:10

标签: javascript extjs

我正在开发一个项目,根据与服务器的连接状态,我需要这个图标。我使用Ping | Pong方法检查连接状态。

getClass: function (countPing) {
    if (countPing == 1) {
        return 'high';
    } else if (countPing == 2) {
        return 'medium';
    } else if (countPing == 3) {
        return 'low';
     } else {
         return 'no';
      }
    }
 });

我的toobar结构https://pastebin.com/dzs86smZ

如何在我的工具栏中放置此图标('高','中','低' no' no')?

2 个答案:

答案 0 :(得分:0)

我猜'getClass'方法不在同一个类中。所以你需要触发Global事件并在'ES.view.Layout.Toolbar.Toolbar'中监听它。您将传递图标大小作为参数。然后,由于您将在范围内,您可以获得对图像的引用,只需使用'setSrc'方法更改其src属性。

答案 1 :(得分:0)

在视图模型中使用公式。下面是一个如何工作的粗略示例,除了显然你想要将文本绑定替换为按钮上的icon或iconCls属性:

Ext.application({
    name : 'Fiddle',

    launch : function() {
        var tb = new Ext.toolbar.Toolbar({
            renderTo: document.body,
            viewModel: {
                data: {
                    status: 1
                },
                formulas: {
                    connectionStatus: function(get) {
                        var v = get('status');
                        switch (v) {
                            case 1: return 'foo';
                            case 2: return 'bar';
                            case 3: return 'baz';
                        }
                    }
                }
            },
            items: [{
                bind: {
                    text: '{connectionStatus}'
                }
            }]
        });

        setInterval(function() {
            var n = Ext.Number.randomInt(1, 3);
            tb.getViewModel().set('status', n);
        }, 500);
    }
});