所以说我有一个商店,在我的数据库中我有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不存在,它是否会从远程服务器上拉?我似乎无法在文档中找到一种方法(除非我错过了它,因为他们的文档有时难以破译= /)
另外,我假设你总是可以对商店进行加载,但我很确定如果只加载那一行,那么正在使用该商店的所有其他位置也只有那一行(我不喜欢不一定要这么说理论上,理论上创建一个商店是我唯一的选择吗?似乎应该有一个更简单的方法因此我想我会问。必须有一些更好的方式,而不是创建一个商店,然后从新商店抓取记录......
答案 0 :(得分:1)
你在这里尝试做的是解决问题的错误方法。您需要回到此行所需的位置,并使用您尝试查找的行的ID对服务器进行独立的ajax调用。然后,服务器将在DB上查找该单行,然后返回数据,以便为您需要的行创建模型。这个逻辑应该独立于商店完成。