ExtJS 4.2:从远程商店加载单个项目

时间:2013-07-09 16:57:06

标签: extjs store extjs4.2

所以说我有一个商店,在我的数据库中我有20,000,000行。 (也足以让我设置pagesize以便每页只返回100行)。由于我有页面集,当我进行原始调用时,我只能获得100个项目。因此,以下内容返回null:

Ext.getStore('MyLargeStore').getById(200); // returns null

这对我来说很有意义,因为从技术上讲,JS方面的商店没有特定的id集。但是,如果该id不存在,是否还要进行强制查找?据我所知,我已经完成了在我的商店中需要的所有“遥控”和“自动”:

Ext.define('MyApp.store.MyLargeStore', {
extend: 'Ext.data.Store',

requires: [
    'MyApp.model.MyLargeModel'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        autoSync: true,
        model: 'MyApp.model.MyLargeModel',
        remoteFilter: true,
        remoteSort: true,
        storeId: 'MyLargeModel',
        buffered: true,
        pageSize: 100
    }, cfg)]);
}
});

无论何时,只要id不存在,它是否会从远程服务器上拉?我似乎无法在文档中找到一种方法(除非我错过了它,因为他们的文档有时难以破译= /)

另外,我假设你总是可以对商店进行加载,但我很确定如果只加载那一行,那么正在使用该商店的所有其他位置也只有那一行(我不喜欢不一定要这么说理论上,理论上创建一个商店是我唯一的选择吗?似乎应该有一个更简单的方法因此我想我会问。必须有一些更好的方式,而不是创建一个商店,然后从新商店抓取记录......

1 个答案:

答案 0 :(得分:1)

你在这里尝试做的是解决问题的错误方法。您需要回到此行所需的位置,并使用您尝试查找的行的ID对服务器进行独立的ajax调用。然后,服务器将在DB上查找该单行,然后返回数据,以便为您需要的行创建模型。这个逻辑应该独立于商店完成。