ExtJS:仅为Ext.panel.Panel项容器设置加载掩码

时间:2015-12-14 09:41:09

标签: extjs extjs4

我已经Ext.panel.Panel使用了工具栏(dockedItems)和动态创建的内容(items)。我想仅.setLoading()面板项目并保持工具栏处于活动状态。有没有办法选择面板项容器组件?

P.S。我可以使用myPanel.items.each(function(item) {item.setLoading()}),但它的解决方案是错误的。

1 个答案:

答案 0 :(得分:2)

您始终只能将加载蒙版应用于面板的主体,因此工具栏处于活动状态且可单击。

要做到这一点,操作非常简单。 您必须调用指定.setLoading()的面板的setLoading(load, target),其中load是布尔值,目标是加载掩码的目标,应该类似于target = panel.body

根据我的回答,我为你做了一点小提琴:

https://fiddle.sencha.com/#fiddle/12h0

小提琴的代码是:

Ext.application({
name: 'Fiddle',

launch: function() {
    Ext.create('Ext.panel.Panel', {
        renderTo: Ext.getBody(),
        border: true,
        width: 200,
        height: 200,
        margin: 100,
        id: 'myPanel',
        defaults: {
            margin: 10
        },
        layout: {
            type: 'vbox',
            pack: 'middle'
        },
        items: [{
            xtype: 'textfield',
            id: 'input'
        }, {
            xtype: 'panel',
            html: 'Other things',
            border: false
        }],
        dockedItems: [{
            xtype: 'toolbar',
            dock: 'bottom',
            items: [{
                text: 'Start Loading',
                listeners: {
                    click: function(th) {
                        Ext.getCmp('input').setValue('opetation');
                        var panel = Ext.getCmp('myPanel');
                        if (!panel.loading) panel.loading = true;
                        else panel.loading = false;
                        panel.setLoading(panel.loading, panel.body);

                        th.setText(panel.loading ? 'Stop Loading' : 'Start Loading');
                    }
                }
            }]
        }]
    });
}
});