2015-06-25 123 views
2

我在排序ExtJS網格時遇到問題。我正在使用Ext JS版本5.1.1.451。未捕獲TypeError:無法讀取undefined屬性'isSynchronized'

網格加載情況良好,但是當我嘗試對列進行排序時,我得到了「Uncaught TypeError:無法讀取屬性'isSynchronized'未定義的」錯誤。

方法addCls被觸發對小鼠運動,並在錯誤occures,me.getData()返回undefined,其中me

constructor 
$observableInitialized: true 
component: constructor 
config: Object 
destroy:() {} 
dom: null 
el: null 
events: Object 
hasListeners: statics.prepareClass.HasListeners 
id: "ext-quicktips-tip" 
initConfig:() {} 
initialConfig: Object 
isDestroyed: true 
lastBox: null 
managedListeners: Array[0] 
shadow: null 

這是發生錯誤的addCls方法:

addCls: function(names, prefix, suffix) { 
     var me = this, 
      elementData = me.getData(), 
      hasNewCls, dom, map, classList, i, ln, name; 
     if (!names) { 
      return me; 
     } 
     if (!elementData.isSynchronized) { 
      me.synchronize(); 
     } 

有任何人遇到過這個問題?這是一個已知的問題還是我做錯了什麼?

謝謝

+0

這意味着'elementData'不是對象的引用;它是'未定義的'。 – Pointy

+0

是的,我明白爲什麼會發生這種情況。我問是否有人遇到這個特定的錯誤(這在Ext JS開發人員中很常見)以及他們做了什麼來擺脫它。 我不想改變來源只是爲了跳過這個錯誤,我不認爲這是好的做法。 –

+0

那麼它意味着'.getData()'返回null;我想你只需要按照這個鏈來找出什麼樣的假設/期望沒有被一些配置或初始化的某個地方所滿足。 – Pointy

回答

0

我已經重寫了handleMouseDown方法和註釋掉快速提示部分。

Ext.override(Ext.dd.DragDropManager, { 
    handleMouseDown: function (e, oDD) { 
     var me = this, 
      xy, el; 
     me.isMouseDown = true; 
     //if (Ext.quickTipsActive) { 
     // Ext.tip.QuickTipManager.ddDisable(); 
     //} 
     me.currentPoint = e.getPoint(); 
     if (me.dragCurrent) { 
      me.handleMouseUp(e); 
     } 
     me.mousedownEvent = e; 
     me.currentTarget = e.getTarget(); 
     me.dragCurrent = oDD; 
     el = oDD.getEl(); 


     Ext.fly(el).setCapture(); 


     xy = e.getXY(); 
     me.startX = xy[0]; 
     me.startY = xy[1]; 


     me.offsetX = me.offsetY = 0; 
     me.deltaX = me.startX - el.offsetLeft; 
     me.deltaY = me.startY - el.offsetTop; 
     me.dragThreshMet = false; 
    } 
}); 

如果任何人有更好的答案,發佈它,我會標記它,如果它是好的。

相關問題