我正在使用此库进行键盘事件,并专注于md-list-item,
https://www.npmjs.com/package/angular-keyboard
我正在使用kb-focus专注于md list
在控制器中,我在刷新列表后调用kbfocus(observation.observationId)。
其中observationId是列表的第一个元素。
当我删除列表的第一个元素时,焦点不会出现在列表的第一个项目上。当删除非第一个元素时,焦点确实出现在第一个项目上。我已经检查过observeId是新返回列表的第一个元素。
有什么建议吗?
以下是html代码:
<md-list flex kb-list>
<md-list-item
ng-repeat="notification in vm.notificationsOb track by
notification.notificationId"
ng-click="vm.eventHandler($event)"
md-ink-ripple="false"
style="padding: 0px; "
ng-class="$index % 2 == 0 && 'evenrow' || 'oddrow'"
kb-item="notification"
kb-focus="notification-{{notification.notificationId}}"
ng-keydown="vm.onKeyDown($event, notification, $index)">
{{notification.subjectId}}
<div class="delete_Check">
<md-checkbox md-no-ink ng-model="notification.selected" aria-invalid=true aria-label="checkbox"
checklist-value="notification.rno" ng-change="vm.isLabelChecked(notification)"
class="notification-checkbox" id="{{'div' + notification.notificationId}}">
</md-checkbox>
</div>
</md-list-item>
</md-list>
以下是控制器的代码: 选中复选框并单击删除按钮(位于md列表顶部)时,将调用deleteNotification()。 vm.arrOfNotificationId包含要删除的ID数组。
function deleteNotification() {
notificationService.deleteSelectedNotifications(vm.arrOfNotificationId,
PortalService.getUserNameFromQueryString(), fetchNotificationList);
}
function fetchNotificationList() {
notificationService.getNotificationListData(PortalService.getUserNameFromQueryString(),
PortalService.getListLimit(),PortalService.getSecurityToken(), onGetListSuccess);
}
function onGetListSuccess(list) {
vm.notificationsOb = list;
if (vm.selectedItem == null) {
vm.selectedItem = _.first(list);
}
/* jshint ignore:end */
if (vm.selectedItem !== null) {
kbFocus.set('notification-' + vm.selectedItem.notificationId);
}
}