EXTJS 6 Modern: buffered store + grid: Uncaught TypeError: Cannot read property 'length' of undefined
EXTJS 6 Modern: buffered store + grid: Uncaught TypeError: Cannot read property 'length' of undefined
这是fiddle
https://fiddle.sencha.com/?fiddle=1ahm#fiddle/1ahm
具有几乎相同代码的经典主题效果很好。
这是一个煎茶错误,请及时到官方论坛报告。
store.getRange()
可以不带start和end参数调用。 ("The starting index. Defaults to zero."/"The ending index. Defaults to the last record. The end index is included.")
bufferedStore.getRange()
没有明确告诉我们它可以在没有参数的情况下调用,但我们可以安全地假设它隐式应该,因为它覆盖了父 class 的函数定义。至少现代网格是这样假设的。
bufferedStore.getRange()
然后用 start
和 end
(均未定义) 调用私有函数 rangeCached
rangeCached
显然希望这两个是数字,否则他们为什么还要在 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
测试过他们的现代网格,因为一旦你解决了第一个错误,就会抛出下一个错误。
尝试将高度设置为网格并让网格从 'Ext.grid.GridPanel' 而不是 'Ext.grid.Grid' 延伸。
在 ExtJS 6.6.0 中,bufferedStore
的 documentation 表示对于现代工具包,您必须使用 Ext.data.virtual.Store
.
这是fiddle https://fiddle.sencha.com/?fiddle=1ahm#fiddle/1ahm
具有几乎相同代码的经典主题效果很好。
这是一个煎茶错误,请及时到官方论坛报告。
store.getRange()
可以不带start和end参数调用。 ("The starting index. Defaults to zero."/"The ending index. Defaults to the last record. The end index is included.")bufferedStore.getRange()
没有明确告诉我们它可以在没有参数的情况下调用,但我们可以安全地假设它隐式应该,因为它覆盖了父 class 的函数定义。至少现代网格是这样假设的。bufferedStore.getRange()
然后用start
和end
(均未定义) 调用私有函数 rangeCached
显然希望这两个是数字,否则他们为什么还要在start === 0 ? 0 : start - 1
? 处使用严格的相等运算符
rangeCached
如果只是这个故障,您可以通过覆盖修复它,例如:
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
测试过他们的现代网格,因为一旦你解决了第一个错误,就会抛出下一个错误。
尝试将高度设置为网格并让网格从 'Ext.grid.GridPanel' 而不是 'Ext.grid.Grid' 延伸。
在 ExtJS 6.6.0 中,bufferedStore
的 documentation 表示对于现代工具包,您必须使用 Ext.data.virtual.Store
.