被迫升级7.2现代版->7.3.1由于Open Tooling在节点15.x中损坏(自制程序在我的mac上应用的更新(。不,我发现使用虚拟存储的网格不再适用于在第一页上选择任何内容!请参阅Sencha自己的厨房水槽,其中第一页没有在第一页上显示亮点,但如果向下滚动,则可以选择行:https://examples.sencha.com/extjs/7.3.0/examples/kitchensink/?modern#infinite-栅格有人知道附近有工作吗?
EDIT:如果你有网格过滤器插件,我发现第一个页面加载被中止,并发出重新加载。重载没有在virtualPage上运行onLoad方法。这导致数据被加载,但indexMap没有被更新。我做了一个重写来调用这个方法。这还没有经过很好的测试。。。超出了我的简单测试用例。
如果你正在使用Ext.Direct填充虚拟商店,并且你滚动到很快,系统就会绊倒并锁定。我也有一个覆盖,我会把它添加到这张票的底部。
Ext.define('Xxx.override.data.virtual.Store', {
override: 'Ext.data.virtual.Store',
privates: {
handleReload: function(op) {
var me = this,
activeRanges = me.activeRanges,
len = activeRanges.length,
pageMap = me.pageMap,
resultSet = op.getResultSet(),
wasSuccessful = op.wasSuccessful(),
pageNumber = op.config && op.config.page,
rsRecords = [],
i, range, page;
if (wasSuccessful) {
me.readTotalCount(resultSet);
if (me.pageMap.getPageCount() !== 0 && pageNumber) {
page = me.pageMap.getPage(pageNumber - 1, false);
if (page && !(page.error = op.getError())) {
page.records = op.getRecords();
page.state = 'loaded';
}
}
page.onLoad(op); // ONLY CHANGE TO ORIGINAL METHOD
me.fireEvent('reload', me, op);
for (i = 0; i < len; ++i) {
range = activeRanges[i];
if (pageMap.canSatisfy(range)) {
range.reload();
}
}
}
if (resultSet) {
rsRecords = resultSet.records;
}
me.fireEvent('load', me, rsRecords, wasSuccessful, op);
}
}
});
使用虚拟存储时的Ext.Direct覆盖。
Ext.define('Xxx.override.data.proxy.Direct', {
override: 'Ext.data.proxy.Direct',
abort: function(operation) {
let returnValue = this.callParent(arguments);
if (operation && operation.isDataRequest) {
operation = operation.getOperation();
}
// This is the part added by mcg1103. when using a virtual store
// when an operation is aborted it is never completed and the Page
// object is left behind in the loading array among other places.
// firing the callbacks will gracefully remove all remnants.
if (operation && Ext.isFunction(operation.triggerCallbacks)) {
operation.triggerCallbacks();
}
return returnValue;
}
});
编辑:仍然没有解决方案,但如果你评论出
plugins: {
gridfilters: false
},
问题消失了。这是因为在调用加载第一个页面的操作之后,会触发重新加载筛选器事件。这将导致中止加载第一页。应该重新加载页面,但似乎没有。数据在那里,页面数据被加载,但indexMap没有设置值。因此,当加载中止时,页面的属性不会被删除,因此它将被重新加载。我仍在寻找解决方案。
7.3.0中也对此进行了说明。我已经将其缩小到第一页没有正确设置对象的位置。位置有几个问题——我看到的主要问题是recordIndex设置不正确,它仍然是默认值-1。而且这个记录还没有被打破。当然,这只是无限存储中记录的第一页。位置对象也缺少其他数据。看起来好像还没准备好。正在调用childtap事件,但位置当然是错误的。我正在研究为什么位置不正确。。。。如果我弄清楚了,我会汇报的。
edit:系统找不到InternalId的记录,因为indexMap没有第一页的记录。onPageLoad事件未开始为第一页调用。还在看。