【发布时间】:2011-08-17 12:16:40
【问题描述】:
我有一个自定义数据存储,它存储存储是否已加载一次的信息。
/**
* Custom DataStore which stores the information whether data has been loaded once or not.
*/
Ext.example.Store = Ext.extend(Ext.data.Store, {
loaded: false,
initComponent: function() {
this.superclass().initComponent.call(this);
this.addEvents('load','beforeload');
},
isLoaded : function() {
return this.loaded;
},
listeners: {
'load' : function(store,records,options) {
this.loaded = true;
}
}
});
直到最近我向这个商店的一个实例添加了一个“beforeload”事件侦听器,这一切都很好。 'load' 监听器现在不会被调用。
var accountsDataStore = new Ext.example.Store({
id : 'account',
proxy : new Ext.data.HttpProxy({
url : 'app/account/fetch/all',
method : 'post',
api : {
destroy : 'app/account/delete'
}
}),
reader : accountReader,
writer : accountWriter,
remoteSort : true,
sortInfo : {
field : 'createdOn',
direction : "DESC"
},
listeners: {
beforeload: function(store, options) {
var sort = options.params.sort;
// setting the sort parameters to match the property names in the DTO
switch(sort) {
case 'company' :
options.params.sort = 'company.name';
break;
default:
// do nothing
}
}
}
});
我在这里做错了什么?也请告诉我您的改进建议
【问题讨论】:
-
你在哪里加载商店?我看不到任何 autoLoad : true 或 accountsDataStore.load() 选项。
-
我尝试通过点击标签来加载商店。如果之前已加载商店,我的意图是不加载商店-
if(!accountsDataStore.isLoaded()) { accountsDataStore.load(); }。isLoaded总是返回 false,因为从不调用负载监听器。 -
嗨,我也面临同样的问题。你能说说你是怎么解决这个问题的吗?
标签: extjs