0

假设我们遵循一篇原创文章http://www.sencha.com/learn/the-mvc-application-architecture并拥有这样的商店:

Ext.define('AM.store.Users', {
    extend: 'Ext.data.Store',
    model: 'AM.model.User',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        url: 'data/users.json',
        reader: {
            type: 'json',
            root: 'users',
            successProperty: 'success'
        }
    }
});

我们决定实现一个无限滚动网格。为此,我们需要手动删除autoLoad: true和调用。store.guaranteeRange(...)

那么这样做的最佳地点是什么?

4

2 回答 2

1
Ext.define('AM.store.Users', {
    extend: 'Ext.data.Store',
    model: 'AM.model.User',
    autoLoad: true,
    remoteSort: true,
    buffered: true,
    pageSize: 100,
    proxy: {
        type: 'ajax',
        url: '/postdata/list',
        limitParam: 'size',
        startParam: undefined,
        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success'
        }
    }
});

在这里演示http://ext4all.com/post/extjs-4-1-grid-infinite-scroll-in-mvc

于 2012-04-26T20:17:49.853 回答
1

渲染网格的地方。您可以覆盖afterRender()方法,或者如果它是模式网格/对话框 - 在呈现之前加载商店。

一对旁注(我试图说明autoLoad通常false适用于所有商店的观点:

  • 如果您将在您的应用程序中使用任何身份验证 - 您将必须autoLoad在所有商店中禁用。
  • 如果您有更多的商店(比如 5-10+?),强烈建议您也禁用它。您不希望在应用程序启动时同时加载所有这些。
  • 很多时候,您需要保证在商店加载后发生了某些事情,然后您再次禁用autoLoad、订阅加载事件和load()商店。
于 2012-04-26T12:00:16.753 回答