2015-04-18 91 views

回答

2

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

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' 
    ]); 

}); 
+0

谢谢。这个解决方案适合我:) –

0

查找EXT-ALL-debug.js源误差的方法,然后创建一个新的JS进入“EXT-所有*的js。”加载后位置,我的版本是:Ext JS 6.2.0.981

核心代码是:Object。 prototype。功能和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); 
     } 
    } 
}; 
0
Ext.define('MyApp.overrides.GridColumn', { 
    override: 'Ext.grid.column.Column', 

    show: function() { 
     if (!this.getRefOwner()) { 
      return; 
     } 
     this.callParent(arguments); 
    } 
}); 

下面是这个解决办法,我使用。