Итак, как говорит нам Анкит Чаудхари, нужно удалить navigationModel. Я подумал, что navigationModel
может быть полезен, и решил переопределить navigationModel, чтобы адаптировать его к моему требованию:
Ext.define('MyApp.override.NavigationModel', {
override : 'Ext.grid.NavigationModel',
scrollOnFocus: true,
constructor: function(config) {
this.callParent(arguments);
if(Ext.isBoolean(config.scrollOnFocus)) this.scrollOnFocus = config.scrollOnFocus;
},
onCellMouseDown: function(view, cell, cellIndex, record, row, recordIndex, mousedownEvent) {
var actionableEl = mousedownEvent.getTarget(this.isFocusableEl, cell);
if (!this.scrollOnFocus && !view.actionableMode && mousedownEvent.pointerType !== 'touch' && mousedownEvent.position.column.cellFocusable !== false && !actionableEl) return;
this.callParent(arguments);
},
onItemMouseDown: function(view, record, item, index, mousedownEvent) {
var me = this,
scroller;
if (!mousedownEvent.position.cellElement && (mousedownEvent.pointerType !== 'touch')) {
if (!view.enableTextSelection) {
mousedownEvent.preventDefault();
}
me.attachClosestCell(mousedownEvent);
if (me.scrollOnFocus && !me.position.isEqual(mousedownEvent.position)) {
me.setPosition(mousedownEvent.position, null, mousedownEvent);
}
scroller = view.getScrollable();
if (scroller) {
scroller.restoreState();
}
}
}
});
Теперь я могу добавить в viewConfig моей сетки настраиваемый navigationModel
:
viewConfig: {
navigationModel:{
type:'grid',
scrollOnFocus: false
}
}
и сетка больше не прокручивается по щелчку мыши.
person
Alexander
schedule
17.08.2017