在我的项目中,我需要在网格加载后立即关注 ng-grid 的第一行,并且当我按下向下键时它应该移动到下一行。我添加了以下事件:
$scope.$on('ngGridEventData', function (e,s) {
$scope.gridOptions.selectRow(0, true);
});
但是这个事件只是选择了第一行,它没有把焦点放在第一行。需要单击该行才能获得焦点。我们需要写什么额外的语句来获得焦点?
在我的项目中,我需要在网格加载后立即关注 ng-grid 的第一行,并且当我按下向下键时它应该移动到下一行。我添加了以下事件:
$scope.$on('ngGridEventData', function (e,s) {
$scope.gridOptions.selectRow(0, true);
});
但是这个事件只是选择了第一行,它没有把焦点放在第一行。需要单击该行才能获得焦点。我们需要写什么额外的语句来获得焦点?
我在 ng-grid 的 github repo 上报告了它并得到了解决方案。你可以在这里查看对话:https ://github.com/angular-ui/ng-grid/issues/539
我们需要添加以下语句以将焦点带到所选元素:
$(".ngViewport").focus();
我能够专注于执行此操作的特定单元格:
$($($(".ngCellText.col1.colt1")[0]).parent()).parent().focus();
.col1.colt1 指的是第二列(.col0.colt0 -> 第一列)
在这种情况下,我选择第一行,第二行将使用:
$($($(".ngCellText.col1.colt1")[1]).parent()).parent().focus();
这有点hacky,但它有效。
JQuery 答案的细微变化:
$('div[ng-row]').eq(2).find('.ageCell').focus()
这将首先找到您想要的行,在这种情况下是第三行,然后是使用列名的列,在这种情况下是“年龄”。如果列更改或重新排序,它会更有弹性。