Ext Js 6.2.1 classic grid 滚动条bug解决方案
此bug未在其他版本发现,参考高版本代码重写类解决此bug,直接上代码:
1 /** 2 * 如果列表同时存在横向滚动条和竖向滚动条,当竖向滚动条滚动到底部时 3 * 点击横向滚动条,滚动条会自动滚动到顶部 4 * 6.2.1 bug修复 5 */ 6 Ext.define('override.grid.NavigationModel', { 7 override: 'Ext.grid.NavigationModel', 8 //当列表被点击时 9 onContainerMouseDown: function (view, mousedownEvent) { 10 var me = this, 11 context = new Ext.grid.CellContext(view), 12 lastFocused, 13 position; 14 //执行Ext.grid.NavigationModel父类的同名方法 15 //执行此方法后如果点击的是滚动条view.lastFocused的值会变为scrollbar 16 //可以由此判断点击的是滚动条还是列表内容 17 //这样就能解决这个bug 18 me.callSuper([view, mousedownEvent]); 19 lastFocused = view.lastFocused; 20 position = (view.actionableMode && view.actionPosition) || lastFocused; 21 //判断点击的元素是否是滚动条,如果是则不做任何操作 22 if (!position || lastFocused === 'scrollbar') { 23 return; 24 } 25 26 context.setPosition(position.record, position.column); 27 mousedownEvent.position = context; 28 me.attachClosestCell(mousedownEvent); 29 30 // If we are not already on that position, set position there. 31 if (!me.position.isEqual(context)) { 32 me.setPosition(context, null, mousedownEvent); 33 } 34 } 35 });