繁体   English   中英

EXTJS 6 Modern:缓冲存储+网格:未捕获的TypeError:无法读取未定义的属性'length'

[英]EXTJS 6 Modern: buffered store + grid: Uncaught TypeError: Cannot read property 'length' of undefined

这是小提琴https://fiddle.sencha.com/?fiddle=1ahm#fiddle/1ahm

具有几乎相同代码的经典主题效果很好。

您应该在官方论坛中及时报告这是一个sencha错误。

  • 可以不使用start和end参数来调用store.getRange() “开始索引。默认为零。//“结束索引。默认为最后一条记录。包括结束索引。”
  • bufferedStore.getRange()并未明确告诉我们可以在不使用参数的情况下调用它,但是我们可以安全地假定它是隐式的,因为它会覆盖父类的函数定义。 至少现代网格假设这样。
  • 然后, bufferedStore.getRange()调用私有函数rangeCached ,它们的startend (均为未定义)
  • rangeCached显然希望这两个是数字,或者为什么还要在start === 0 ? 0 : start - 1甚至使用严格相等运算符start === 0 ? 0 : start - 1 start === 0 ? 0 : start - 1

如果只是这种故障,则可以使用替代来修复它,例如:

Ext.define('MyBufferedStoreOverride',{
    override:'Ext.data.BufferedStore',
    getRange:function(start, end, options) {
        if(!Ext.isNumber(start)) start = 0;
        if(!Ext.isNumber(end)) end = this.getCount();
        me.callOverridden([start, end, options]);
    }
})

但是我认为Sencha从未使用BufferedStore测试他们的Modern Grid,因为一旦解决了第一个错误,就会抛出下一个错误。

尝试设置网格的高度,并使网格从“ Ext.grid.GridPanel”而不是“ Ext.grid.Grid”扩展。

ExtJS 6.6.0中, bufferedStore文档说,对于现代工具包,必须使用Ext.data.virtual.Store

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM