Extjs Sencha触摸式负载掩模

Extjs Sencha触摸式负载掩模,extjs,sencha-touch,sencha-touch-2,Extjs,Sencha Touch,Sencha Touch 2,我有列表和下拉刷新插件在它。当刷新函数启动时,我想显示加载掩码。但是它没有在那里展示。当我评论store.removeAll()时行我可以看到loadmask正在工作。我不知道store.removeAll()有什么问题。请帮我解决这个问题。提前谢谢 { xclass: 'Ext.ux.PullRefreshFn', pullRefreshText: 'Pull down for re

我有列表和下拉刷新插件在它。当刷新函数启动时,我想显示加载掩码。但是它没有在那里展示。当我评论
store.removeAll()时行我可以看到loadmask正在工作。我不知道store.removeAll()有什么问题。请帮我解决这个问题。提前谢谢

                {
                    xclass: 'Ext.ux.PullRefreshFn',
                    pullRefreshText: 'Pull down for refresh Contacts!',
                    refreshFn: function() {
                        console.log('pull refresh working');
                        Ext.Viewport.setMasked({
                            xtype: 'loadmask',
                            message: 'Please Wait...'
                        });
                        var store = Ext.getStore('Contactsstore');
                        store.removeAll();

                        var url = apiurl+'Contact.ashx?switch=GetContactList&api_id=4&getDataAgain=true';
                        store.getProxy().setUrl(url);
                        store.loadPage(1,{
                            callback: function (records, operation, success, response) {
                                if (success==1) {

                                    Ext.Viewport.setMasked(false);

                                } else {
                                    Ext.Viewport.setMasked(false);


                                }
                            }
                        });
                        Ext.getCmp('searchcontact').reset();
                    }
                }
这是我的商店配置

Ext.define('WinReo.store.Contactsstore', {
    extend: 'Ext.data.TreeStore',
    requires: [
        'WinReo.model.Contactsmodel'
    ],

    config: {
        storeId: 'Contactsstore',
        defaultRootProperty: 'items',
        model: 'WinReo.model.Contactsmodel',
        autoLoad: false,
        pageSize: 20,
        proxy: {

            type: 'ajax',
            method:'post',
            id: 'Contactsstoreproxy',
            url:apiurl+'Contact.ashx?switch=GetContactList&api_id=4&getDataAgain=false',
            reader: {
                type: 'json',
                rootProperty: 'items'
            }
        },
        listeners: {
            load: function(store, records, successful, operation, eOpts) {
                callback:{
                    succes:
                        if(store.getCount()!=0){
                            var RecordCount=store.getAt(0).get('RecordCount');
                            //console.log('RecordCount',RecordCount);
                            store.setTotalCount(RecordCount);
                            var storectscount = store.getTotalCount();
                            //Ext.Msg.alert('Store Total count',storectscount, Ext.emptyFn);
                        }

                }


            }

        }
    } 
    }

});

在浏览器有机会呈现遮罩之前,加载遮罩不会呈现,而在Javascript代码完成之前,加载遮罩不会呈现。我怀疑由于某种原因,
removeAll
调用没有很快完成(或者根本没有完成),或者
clear
上的事件侦听器没有按需要完成。检查您商店的配置是否有
syncRemovedRecords:true
autoSync:true
。您还可以尝试
removeAll(true)
以防止
清除事件触发

更新

查看您的商店定义,我至少可以看到一个问题:您的
load
侦听器似乎没有正确定义。您在函数(不准备编译)中定义了一个
回调
字段,“succes”拼写错误。这就是你的想法吗

       load: function(store, records, successful, operation, eOpts) {
            if(successful === true && store.getCount()!=0){
                    var RecordCount=store.getAt(0).get('RecordCount');
                    store.setTotalCount(RecordCount);
                }
            }
        }

这可能是我有一个大型树存储的原因,因此当我使用用户removeAll()时,删除记录会花费太多时间。已尝试remoeAll(true)并检查了我的存储配置。但是没有成功。我已经编辑了我的问题并附上了我的商店代码。你可以检查一下吗..谢谢你的快速回复,更改了我的商店回拨功能,但是加载掩码问题仍然存在。我使用这个插件来建立一个手风琴列表。所以我在装一个树顶。我不知道这是为什么它很慢。你有没有找到解决办法,请告诉我。。。你可以用一个非常小的测试数据集来试用这个商店,看看它是否有用。现在它可以工作了,正如你所说,我的商店清除数据花费了太多时间。现在我正在使用storectn.data.clear();快速清除store而不是store.removeAll()。我认为你的答案是正确的,这给了我解决问题的宝贵建议