我有一个商店APP.store.Posts
,我希望实例化3次。它们都将保存相同类型的数据,但在重新加载,分页等时将使用不同的参数。在控制器中,我在onLaunch
函数中执行此操作。
onLaunch: function() {
Ext.create('APP.store.Posts',{
storeId: 'unclassifiedPosts'
});
Ext.create('APP.store.Posts',{
storeId: 'positivePosts'
});
Ext.create('APP.store.Posts',{
storeId: 'negativePosts'
});
},
然后,在我在控制器上创建的beforerender
侦听器方法中,我这样做:
beforeRenderPostsGrid: function(grid) {
var store = Ext.getStore('unclassifiedPosts');
store.load();
},
beforeRenderPositivePostsGrid: function(grid) {
var store = Ext.getStore('positivePosts');
store.getProxy().extraParams = {'some_param' : 'some_value'};
store.load();
var checkOtherStore = Ext.getStore('unclassifiedPosts'); //THIS STORE NOW HAS SAME PARAMS AS positivePosts STORE
},
问题是,无论最后一个beforerrender
网格被调用,所有3个商店都有这些参数。所以初始加载很好,但如果我做任何刷新,分页等。它们都显示相同的数据b / c每个商店的代理以某种方式具有相同的extraParams。
根据我的理解,storeId
参数应该使我的商店与众不同,所以我错过了一步吗?
答案 0 :(得分:1)
我遇到了同样的问题。我的商店实例是唯一的,但由于某种原因,它们每个都有相同的代理。我发现解决这个问题的唯一方法是在创建商店时包含代理配置。但是必须包含完整的代理配置,这是实际的代码:
missingStore = Ext.create('ST.store.Attendance', {
storeId: 'Missing_Attendance',
proxy: {
type: 'ajax',
url: 'query',
extraParams: {
resource: 'Attendance',
parameters: '6'
},
writer: 'pipe'
}
}),
partialStore = Ext.create('ST.store.Attendance', {
storeId: 'Partial_Attendance',
proxy: {
type: 'ajax',
url: 'query',
extraParams: {
resource: 'Attendance',
parameters: '5'
},
writer: 'pipe'
}
}),
attendedStore = Ext.create('ST.store.Attendance', {
storeId: 'Attended_Attendance',
proxy: {
type: 'ajax',
url: 'query',
extraParams: {
resource: 'Attendance',
parameters: '4'
},
writer: 'pipe'
}
}),