我有列表并下拉以刷新插件。当刷新功能触发时,我想显示加载掩码。但它没有显示在那里。当我评论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);
}
}
}
}
}
}
});
答案 0 :(得分:1)
在浏览器有机会渲染掩码之前,不会渲染加载掩码,直到您的Javascript代码完成后才会发生。我怀疑由于某种原因,removeAll
调用没有快速完成(或根本没有),或者clear
上的事件监听器没有像它需要的那样完成。检查商店的syncRemovedRecords: true
和autoSync: true
配置。您还可以尝试使用removeAll(true)
来阻止clear
事件发生。
<强>更新强>
查看商店定义,我至少可以看到一个问题:您的load
侦听器看起来不正确。您正在函数内部定义callback
字段(不会编译),并且'successces'拼写错误。这是你的想法吗?
load: function(store, records, successful, operation, eOpts) {
if(successful === true && store.getCount()!=0){
var RecordCount=store.getAt(0).get('RecordCount');
store.setTotalCount(RecordCount);
}
}
}