AngularJS - ng-disabled не работает для тега Anchor

38

Я использую ng-disabled, мне это нравится. Он работает хорошо для меня для ввода и кнопок. Для метки привязки не работает. Как я могу исправить?

HTML code

<a ng-disabled="addInviteesDisabled()">Add</a>

JS code

  $scope.addInviteesDisabled = function() {
      return $scope.event.status === APP_CONSTANTS.STATUSES.PENDING_APPROVAL;
  };
  • 0
    Вместо этого вы должны использовать ng-show.
  • 8
    Я должен показать тег привязки в отключенном состоянии @Vineet Vineet
Показать ещё 2 комментария

10 ответов

55
Лучший ответ

Для гиперссылок атрибут отключен. Вы можете сделать это:

.disabled {
  cursor: not-allowed;
}

<a ng-click="disabled()" ng-class="{disabled: addInviteesDisabled()}">Add</a>

$scope.disabled = function() {
  if($scope.addInviteesDisabled) { return false;}
}
  • 12
    Спасибо за ваш ответ @JsIsAwesome. Я изменил как .disabled { cursor: default; opacity: .5; }
  • 1
    @Donthamsettivbhadrarao +1 за opacity: .5 спасибо. : D
Показать ещё 5 комментариев
17

Вы можете создать класс linkDisabled css и применить его к своему якорю:

<style>

.linkDisabled {
  cursor: not-allowed;
  pointer-events: none;
  color: grey;
}

</style>
  • 2
    Возможно, стоит быть осторожным с этим, так как по состоянию на июнь 2016 года правило pointer-event поддерживается только в 11+. Все остальные браузеры достаточно безопасны. источник
  • 0
    также, даже если это решение применяется, ссылка может быть нажата с помощью Enter
Показать ещё 1 комментарий
4

Вы не можете отключить тэг привязки с помощью ng-disabled.

Контроль формы отключил свойство, но тег привязки не имеет свойства disable.

Проверить Почему angular ng-disabled работает с классом btn bootstrap?

3

Вы можете сделать это через CSS, не требуя каких-либо причудливых директив. Просто используйте ng-класс, чтобы применить класс вроде следующего:

нг-класс:

ng-class="{disabledLink: disabledFunction()}"

CSS

.disabledLink {
    color: #ccc;
    pointer-events:none;

}

полный кредит -

https://css-tricks.com/pointer-events-current-nav/

1

Да, мы можем отключить тег привязки, чтобы увидеть, что нужно сделать. Якорь доступен для кликабельности, сначала мы отключили его, мы можем сделать это с помощью указателей-событий: none; а затем, чтобы показать, что использование отключено, мы можем изменить цвет, на котором мы должны отключить его, как цвет: # 95979A;. Тем не менее нам нужно понять, что здесь происходит, добавив выше, не отключит событие click тега привязки. Чтобы остановить это, нам нужно добавить ng-disabled, который добавляет событие атрибута как disabeld = disabled. Нам нужно поймать это с помощью [disabled].

Итак, окончательный код: a [отключено] {указатель-события: нет; цвет: # 95979A;}  отключит событие click тега привязки.

Надеюсь, это помогло. Благодаря

1

На этот вопрос был дан ответ: Включить/отключить привязывающие метки с помощью AngularJS

Используйте настраиваемую директиву или используйте кнопку.

  • 2
    Я должен использовать пользовательские директивы для этого?
  • 0
    Прочитайте ссылку, которую я предоставил: stackoverflow.com/questions/23425254/…
0

У меня была та же проблема, что и кнопки навигации, этот обходной путь был хорошим решением для моего проекта!

<a href="{{nextItem ? '/the-link/i-want-to-use' : '#'}}" ng-class="{'iamDisabled':!nextItem}">Some link text</a>

В принципе, есть две кнопки (сделанные с тегами ссылок), одна для следующей и другая для предыдущих. есть две переменные $scope, nextItem и prevItem, по одному для каждой кнопки. Поэтому, если нет следующего (или предыдущего) тега, он будет выглядеть правильно (так что вы увидите его отключен).

Когда nextItem не является нулевым, href будет отображаться в href="/the-link/i-want-to-use", а когда будет null, href будет href="#".

0

Лучший способ - добавить отключенное условие в функцию якоря. Таким образом, функции выполняются только в том случае, если отключенное условие проверено и прошло.

$scope.next_kh_resource = function(){
    if ($scope.selected_kh_index < ($scope.selected_step.step_kh_resources.length -1)){
        var next = $scope.selected_kh_index + 1;
        $scope.selected_kh_index = $scope.selected_kh_index +1;
        $scope.selected_kh_resource = $scope.selected_step.step_kh_resources[next];
    }
}
$scope.prev_kh_resource = function(){
    if ($scope.selected_kh_index > 0){
        var prev = $scope.selected_kh_index -1;
        $scope.selected_kh_index = prev;
        $scope.selected_kh_resource = $scope.selected_step.step_kh_resources[prev];
    }

}

В приведенном выше примере я отключил привязки привязки страниц next и prev, вставив в функции отключенное условие. Умные пользователи. Они скоро узнают, что это конечная страница, и они могут щелкнуть дальше, но ничего не произойдет

0

Когда ng-Disabled оценивается как true, устанавливает атрибут disabled для элемента, который обычно является вводом или другим элементом управления формой. В тегах <a> нет атрибутов disabled, поэтому он никогда не будет установлен. Попробуйте установить ng-Disabled по вашей ссылке на true, и вы сами увидите.

Может быть, это поможет: ng-disabled И привязки тегов Oh Noes!

  • 2
    Да, я передал этот урок, прежде чем задавать этот вопрос @adamjld. Но я должен использовать якорь вместо кнопки.
-4

Использовать a-disabled вместо ng-disabled

  <a a-disabled="addInviteesDisabled()">Add</a>
  • 3
    Не работает a-disabled Umesh Kolapkar. Что это a-disabled ? Пожалуйста, дайте любую ссылку.
  • 0
    его пользовательская директива. Проверьте эту ссылку plnkr.co/edit/GkP1ukju4FWgBeprBLwj?p=preview
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню