ExtJS 4:当img组件加载大图像时显示LoadMask

时间:2012-12-19 12:28:26

标签: extjs

我需要通过点击按钮在Img组件的更新src属性期间显示“正在加载图像...”掩码。

此代码未显示加载掩码:

certImg.setLoading('Loading image...');
certImg.setSrc('load_image.php?file_name=' + record.get('invoice_item_file'));
certImg.setLoading(false);

此代码显示,但不隐藏加载掩码(显示在更新的图像上):

certImg.setLoading('Loading image...');
certImg.setSrc('load_image.php?file_name=' + record.get('invoice_item_file'));

我尝试将图像尺寸增加到1-2 Mb,这使得它加载3-4秒,但负载模板仍然没有显示... 我也尝试将certImg.setLoading(false)放到aftermder Img事件中,结果是一样的。

当评论“certImg.setLoading(false);”时 - img已更新,但仍然会在img ...

上显示loadmask

2 个答案:

答案 0 :(得分:0)

你能查一下你的代码吗?它对我有用..参见示例here

var isResized = false;
var changingImage = Ext.create('Ext.Img', {
    src: 'http://www.sencha.com/img/20110215-feat-html5.png',
    resizable:true,
    listeners: {
    render: function (me) {
        me.el.on({
            load: function (evt, ele, opts) {
                  me.setLoading('Loading Mask Tested');
            }
            });
        },
        resize:function(me) {
            alert("resized");
            if(isResized) {
                alert("second time");
             me.setSrc('http://www.sencha.com/img/20110215-feat-perf.png');   
            } else {
                isResized= true;         
            }

        },

      afterrender: function (me) {
        me.el.on({
            load: function (evt, ele, opts) {
                  alert("rendered");
                  me.setLoading(false);
            }
            });
        }
    }
    //height:200,
    //renderTo: Ext.getBody()
}).render(Ext.getBody());

答案 1 :(得分:0)

有趣的案例...... 我刚刚在我的代码中添加了警报并看到了相同的结果。

certImg.setLoading('Loading image...');
certImg.setSrc('load_image.php?file_name=' + record.get('invoice_item_file'));
alert('now it loading...');
certImg.setLoading(false);

但是在您的代码中如果使用大图像(如3-4 Mb),则在加载图像时,您真的看不到加载蒙版。看起来,因为加载掩码显示AFTER加载后很快完成,如果我们不使用警报暂停显示 - 我们看不到它。

我只是尝试以你的方式更改我的代码,但采取相同的结果 - 如果删除警告而不是加载掩码dod不显示...

Sencha没有为这种情况提供任何样本,可能没有在这个框架中实现。

您必须尝试尝试下载大图像,而不使用警报来查看此现象。