我想在更改页面时重置商店。 这意味着我不希望任何旧视图/页面中的任何过滤器,分组或监听器。
Currentyl我正在设置我的视图存储:
{
xtype: 'admingrid',
...
columns: [
...
],
store: 'appname.store.administration.User'
}
我正在加载商店:
onAfterRender: function() {
//load all users
this.setUserStore(this.getUserGrid().getStore());
this.getUserStore().load();
},
在某些情况下是这样的:
onAfterRender: function() {
//load all users
this.setUserStore(Ext.StoreManager.lookup('appname.store.administration.User'));
this.getUserStore().load();
},
我的所有页面都扩展了我的基本视图,因此我认为我只是做了类似的事情:
Ext.define("appname.view.Base", {
extend: 'Ext.panel.Panel',
ui: 'basepanel',
padding: 15,
contentPaddingProperty: 'padding',
listeners: {
beforedestroy: function() {
Ext.StoreManager.each(function (item, index, len) {
item.clearFilter(true); // param: suppressEvent
item.clearGrouping();
item.clearListeners(); // this will also remove managed listeners
});
}
}
});
当我第一次进入视图时,这将导致网格有时是空的...我不明白为什么...当我进入视图时第二次或有时第三次显示网格与条目..
有没有通用的方法来完成这样的事情?我做错了什么?我不明白为什么会这样。
答案 0 :(得分:0)
如果商店出现在您的后续活动中,请清除商店。这样,你就可以重新使用商店并清除它。
因此,在您的后续工作中,使用StoreManager查找商店。如果它存在,它是在之前创建的,你可以清除它。
var store = Ext.StoreManager.lookup('storeid');
if(store) {
store.clearFilter(true);
store.clearGrouping();
}
只要它存在,这将清除商店。