extjs 未捕获的类型错误:无法读取未定义的属性“isSynchronized”

wko9yo5t  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(139)

我对ExtJS网格进行排序时遇到问题。我使用的是ExtJS版本5.1.1.451。
网格加载正常,但当我尝试对列进行排序时,出现“Uncaught TypeError:无法读取未定义”错误的属性“isSynchronized”。
方法addCls在鼠标移动时触发,当错误发生时,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();
        }

以前有人遇到过这个问题吗?是已知的问题还是我做错了什么?
谢谢你

ee7vknir

ee7vknir1#

我已经覆盖了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;
    }
});

如果有人有更好的答案,张贴它,我会标记它,如果它是好的。

5jvtdoz2

5jvtdoz22#

我遇到这个问题是因为我根据需要单独加载的Map渲染了一个不同的值。如果Map没有加载到视图模型中,那么渲染器似乎会因为这个错误而失败。
我用一些检查来解决它,检查它所需要的东西是否存在:

// on the renderer for the column where I have a combobox editor field
renderer: function(value) {
    var mappings = vm.get('ruleMapping')
    if(!!mappings) {
        var rule = _.find(mappings, ['id', value]
        if(!!rule) {
            return `<a href="${rule.link}>${rule.name}</a>"`
        }
    }
    return 'Setting value'
}

相关问题