我正在寻找来自ui-grid的停止键盘事件。例如:按住enter键,ui-grid导航到下一行,这里我需要阻止此操作。即使使用实现ng-keypress-listener的cellTemplate,也无法通过按Enter键来阻止ui-grid切换到下一行。
有谁知道如何阻止ui-grid或关闭键盘事件?
答案 0 :(得分:4)
它像魅力一样,非常感谢:)
我现在使用装饰器服务来覆盖ui-grid的方法getDirection。
FYI。这是代码:
angular
.module('app')
.config(function($provide){
$provide.decorator('uiGridCellNavService', function ($delegate, uiGridConstants, uiGridCellNavConstants) {
var getDirection = $delegate.getDirection;
$delegate.getDirection = function (evt) {
if (evt.keyCode === uiGridConstants.keymap.LEFT ||
(evt.keyCode === uiGridConstants.keymap.TAB && evt.shiftKey)) {
return uiGridCellNavConstants.direction.LEFT;
}
if (evt.keyCode === uiGridConstants.keymap.RIGHT ||
evt.keyCode === uiGridConstants.keymap.TAB) {
return uiGridCellNavConstants.direction.RIGHT;
}
if (evt.keyCode === uiGridConstants.keymap.UP ||
(evt.keyCode === uiGridConstants.keymap.ENTER && evt.shiftKey) ) {
return uiGridCellNavConstants.direction.UP;
}
if (evt.keyCode === uiGridConstants.keymap.PG_UP){
return uiGridCellNavConstants.direction.PG_UP;
}
// delete listener for key ENTER
if (evt.keyCode === uiGridConstants.keymap.DOWN) {
return uiGridCellNavConstants.direction.DOWN;
}
// original code
/*if (evt.keyCode === uiGridConstants.keymap.DOWN ||
evt.keyCode === uiGridConstants.keymap.ENTER) {
return uiGridCellNavConstants.direction.DOWN;
}*/
if (evt.keyCode === uiGridConstants.keymap.PG_DOWN){
return uiGridCellNavConstants.direction.PG_DOWN;
}
return null;
};
return $delegate;
})
答案 1 :(得分:0)
您可以通过覆盖其服务/指令来调整默认功能。
我为您的案例创建了Plunkr。
复制包含keyLavner for cellNavigation的整个服务,并删除ENTER
- 观察者。
getDirection: function (evt) {
if (evt.keyCode === uiGridConstants.keymap.LEFT ||
(evt.keyCode === uiGridConstants.keymap.TAB && evt.shiftKey)) {
return uiGridCellNavConstants.direction.LEFT;
}
if (evt.keyCode === uiGridConstants.keymap.RIGHT ||
evt.keyCode === uiGridConstants.keymap.TAB) {
return uiGridCellNavConstants.direction.RIGHT;
}
/*
if (evt.keyCode === uiGridConstants.keymap.UP ||
(evt.keyCode === uiGridConstants.keymap.ENTER && evt.shiftKey) ) {
return uiGridCellNavConstants.direction.UP;
}
*/
if (evt.keyCode === uiGridConstants.keymap.PG_UP){
return uiGridCellNavConstants.direction.PG_UP;
}
/*
if (evt.keyCode === uiGridConstants.keymap.DOWN ||
evt.keyCode === uiGridConstants.keymap.ENTER && !(evt.ctrlKey || evt.altKey)) {
return uiGridCellNavConstants.direction.DOWN;
}
*/
if (evt.keyCode === uiGridConstants.keymap.PG_DOWN){
return uiGridCellNavConstants.direction.PG_DOWN;
}
return null;
},
direction.UP
和direction.DOWN
检查已注释掉,但其他所有检查都按预期工作。我在Plunkr app.js。