【问题标题】:ExtJS: Set loading mask only for Ext.panel.Panel items containerExtJS:仅为 Ext.panel.Panel 项目容器设置加载掩码
【发布时间】:2015-12-14 09:41:09
【问题描述】:

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

附注我可以使用myPanel.items.each(function(item) {item.setLoading()}),但它的解决方案很糟糕。

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

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

    做这个操作很简单。 您必须调用指定setLoading(load, target) 的面板的.setLoading(),其中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');
                        }
                    }
                }]
            }]
        });
    }
    });
    

    【讨论】:

    • 谢谢回答,正是我要问的。你能帮我多一点吗?我在面板上使用overflowY: 'scroll',有时内容太大,因此 Loading... 文本位于面板的可见部分下方。如何在面板主体顶部显示 Loading... 文本并从工具栏缩进?
    • 问题是如果使用滚动条加载面板没有完全覆盖面板?
    • 不,加载掩码完全覆盖面板,但面板内容高度大于屏幕高度,Loading... 文本显示在屏幕底部边框下方的面板中间。
    • 您可以使用属性loadingpanel.msgWrapEl 更改加载消息的位置,并使用多个函数更改位置,例如.setXY()。请注意var loadingpanel = panel.setLoading(.....)。我希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多