3

我有一家商店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参数应该使我的商店独一无二,所以我错过了一步吗?

4

1 回答 1

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'
    }
}),
于 2012-07-20T15:32:03.957 回答