AngularJS:如果删除了第一个元素,则KB-focus不会处理md-list的第一个元素

时间:2018-04-02 04:59:45

标签: angularjs

我正在使用此库进行键盘事件,并专注于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);
            }
    }

0 个答案:

没有答案