Angularjs 连续几个选项卡后,行选项卡索引失去焦点

Angularjs 连续几个选项卡后,行选项卡索引失去焦点,angularjs,angular-ui-grid,ui-grid,Angularjs,Angular Ui Grid,Ui Grid,我有一个ui网格,只有一列和大约1000行。每行都有一个文本框。我想通过选项卡浏览文本框。这可以在10-15行左右正常工作,在文本框失去焦点之后,如果再次按tab键,它将跳过接下来的几行并跳转到另一个文本框 看到问题了吗 UI网格选项: $scope.gridOptions = { rowHeight: '200', enableColumnMenus: false, paginationPageSize: 2000, columnDefs: [ {n

我有一个ui网格,只有一列和大约1000行。每行都有一个文本框。我想通过选项卡浏览文本框。这可以在10-15行左右正常工作,在文本框失去焦点之后,如果再次按tab键,它将跳过接下来的几行并跳转到另一个文本框

看到问题了吗

UI网格选项:

$scope.gridOptions = {
    rowHeight: '200',
    enableColumnMenus: false,
    paginationPageSize: 2000,
    columnDefs: [
      {name:"value", width:'*',
        cellTemplate: gridTemplate,
      }
    ],
    data: gridData
};

发生这种行为的原因:

ui.grid
有自己的
ui.grid.infiniteScroll
模块,但是默认情况下,由于性能损失,它不会呈现所有1000个项目

如果您检查表的DOM结构,您会发现
ui.grid
仅呈现15个项目,并在滚动时对其进行udates(在单击选项卡时也会触发滚动)。这就是为什么前15项工作正常,重点放在选项卡单击上的原因

当您到达索引16时,
ui.grid
使用新索引重新呈现15个项目,因此您将失去焦点。

我看到你也在上打开了这个问题,我相信它的
ui.grid
bug除了1479个其他的:)

从历史
ui.grid
来看,大约有200个与focus相关的问题,看起来他们的开发人员并不急于解决这些问题,因为它太复杂,可能会导致回归


因此,我的结论是接受它或使用分页结构。

无论@Maxim提到什么都是绝对正确的。为了解决这个问题,,
作为解决方法,您可以将virtualThreshold设置为50,然后使用分页,这样不会丢失焦点。

您可以通过捕获TAB键按下事件来绕过它,并覆盖默认行为

每个文本框将监听按键事件,将焦点传递到下一个文本框

这是我能帮上忙的

然而,1000个输入听起来像是一个糟糕的用户体验,可能会有糟糕的性能