ngDisabled альтернатива для ссылки?

У меня есть список на моей странице с кнопкой удаления для каждого элемента. Кнопка не <button>, но на самом деле это потрясающая иконка с ng-click указывая на метод сервиса RESTful:

<i class="fa fa-trash fa-lg pull-right" ng-click="deleteQuestion($id)"</i>

Элемент будет удален из просмотра только после того, как запрос Http будет завершен. Если пользователь нажимает значок слишком быстро несколько раз, повторные запросы будут отправлены, и только первый будет успешным, другие потерпят неудачу, потому что объект не существует. Я хочу отключить кнопку (иконку) или не отправлять повторяющиеся запросы. Каков наилучший подход?

Я знаю, что есть ngDisabled, но я не могу использовать его, потому что элемент на самом деле не кнопка, и я также хочу заблокировать одну кнопку. не все одновременно.

2 ответа

Попробуйте следующий подход :

Посмотреть:

<i class="fa fa-trash fa-lg pull-right" ng-hide="remove" ng-click="deleteQuestion($id)"</i>

Js Controller:

$scope.remove = false;

$scope.deleteQuestion(id) {
      $scope.remove = true;
      $http.get('url')
         .success(data){
            //other logic
            $scope.remove = false;
          }
}

Вы можете сделать что-то вроде этого -

$scope.deleteQuestion(id) {
    $scope.disabled = true;
    $http.get('url')
    .success(data){
        //other logic
        $scope.removed = true;
    }
}

И в вашей разметке вы можете иметь -

<i class="fa fa-trash fa-lg pull-right" ng-show="!removed" ng-disabled="deleted" ng-click="deleteQuestion($id)"</i>

Это самый простой способ сделать это, но, конечно, не самый элегантный.

Другие вопросы по тегам