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()。我认为你的答案是正确的,这给了我解决问题的宝贵建议