【问题标题】:ExtJS error in nested grids : Cannot read property 'isGroupHeader' of null嵌套网格中的 ExtJS 错误:无法读取 null 的属性“isGroupHeader”
【发布时间】:2015-04-18 13:17:56
【问题描述】:

每当我在嵌套网格中展开或折叠行时,我都会收到以下错误:

“未捕获的类型错误:无法读取 null 的属性 'isGroupHeader'”

google 给了我这个 url,但它似乎在 5.1 中不起作用,知道如何转换它来解决 5.1 问题吗?

http://blog.kondratev.pro/2014/08/getting-rid-of-annoying-uncaught.html

这是错误的小提琴示例: https://fiddle.sencha.com/#fiddle/g5b

【问题讨论】:

    标签: javascript extjs extjs5


    【解决方案1】:

    这是因为网格单元格或单元格编辑器事件(鼠标悬停、单击或其他)在另一个网格(父级或祖先)的上下文中触发。在这里您可以看到如何阻止事件冒泡:

    Ext.require(['Nested.view.NestedGrid'], function() {
        var nGrid = Ext.create({
            type: 'nestedgrid',
            renderTo: div
        });
    
        // prevent bubbling of the events
        nGrid.getEl().swallowEvent([
            'mousedown', 'mouseup', 'click',
            'contextmenu', 'mouseover', 'mouseout',
            'dblclick', 'mousemove'
        ]);
    
    });
    

    【讨论】:

      【解决方案2】:
      Ext.define('MyApp.overrides.GridColumn', {
          override: 'Ext.grid.column.Column',
      
          show: function () {
              if (!this.getRefOwner()) {
                  return;
              }
              this.callParent(arguments);
          }
      });
      

      这是我正在使用的解决方法。

      【讨论】:

        【解决方案3】:

        找到ext-all-debug.js源码错误方法,然后在加载后新建一个js到“ext-all *.js”位置,我的版本是:Ext JS 6.2.0.981

        核心代码为:Object.prototype.function 和xxx != null

        后缀代码:

        Ext.event.publisher.Dom.prototype.unsubscribe = function (element, eventName, delegated, capture) {
            var me = this,
                captureSubscribers, bubbleSubscribers, subscribers, id;
            if (delegated && !me.directEvents[eventName]) {
                captureSubscribers = me.captureSubscribers;
                bubbleSubscribers = me.bubbleSubscribers;
                subscribers = capture ? captureSubscribers : bubbleSubscribers;
                if (subscribers != null && subscribers[eventName]) {
                    --subscribers[eventName];
                }
                if (me != null && bubbleSubscribers != null && captureSubscribers != null && !me.handles[eventName] && !bubbleSubscribers[eventName] && !captureSubscribers[eventName]) {
                    // decremented subscribers back to 0 - and the event is not in "handledEvents"
                    // no longer need to listen at the dom level
                    this.removeDelegatedListener(eventName);
                }
            } else {
                subscribers = capture ? me.directCaptureSubscribers : me.directSubscribers;
                id = element.id;
                subscribers = subscribers[eventName];
                if (subscribers[id]) {
                    --subscribers[id];
                }
                if (!subscribers[id]) {
                    // no more direct subscribers for this element/id/capture, so we can safely
                    // remove the dom listener
                    delete subscribers[id];
                    me.removeDirectListener(eventName, element, capture);
                }
            }
        };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-07
          • 2018-10-11
          • 2017-06-07
          • 1970-01-01
          • 1970-01-01
          • 2022-07-27
          相关资源
          最近更新 更多