簡體   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