如何使用AngularJS使图像链接不可点击

How can I make an image link unclickable using AngularJS?

本文关键字:链接 图像 何使用 AngularJS      更新时间:2023-09-26

我有一个图像,它有一个相关的操作(使用ng-click):

   <a href="#" ng-click="doSomething($event)">
       <img src="myImage.png">
   </a>

在某些情况下,我希望它能被解开(并变灰,但之后我会担心)。本质上相当于使用ng-disabled/enabled(这不起作用,因为disabled不是锚点元素的属性)。像这样(用一个更复杂的表达式代替"true"):

 <a href="#" ng-click="doSomething($event)" ng-disabled="true">
       <img src="myImage.png">
   </a>

有办法做到这一点吗?

请看演示http://jsbin.com/nadexu/6/edit

你可以使用css和设置不透明度,只使用一个指令ng类,使链接"不可阅读"

a.disabled {
   pointer-events: none;
   cursor: default;
  opacity:0.5
}
a.enable {
    opacity:1
}

HTML:

 <a href="" ng-click="doSomething($event)"   ng-class="{'enable': enable,'disabled': !enable }"
    >
       <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDlD8Xc_e4xZJeDGlyHF3KkeKibtex6qXwGzlM_w_-7WV-NrPf"/>
   </a>

http://plnkr.co/edit/vsz8bnhVRCwYxeijEPlq?p=preview

<a 
  ng-click="(toggle = !toggle) && doSomething($event)" 
  ng-disabled="toggle" 
  ng-style="{ opacity: { true: 0.5, false: 1 }[toggle == true] }">
    <img src="https://www.google.com/images/srpr/logo11w.png">
</a>

因此,每隔单击一次图像就会执行该操作,每隔单击一下图像就会变灰。

这就是你想要的吗?

我会删除超链接,并使用点击图像本身

<img src="myImage.png" 
ng-click="image_clicked || do_something()" 
ng-disabled="image_clicked"></img>

尽管有很多方法可以做到这一点,但一种选择是使用ng-if语句来渲染两个不同的ui元素,一个带有超链接,一个只带有图像(使其不可点击)

<div ng-if="condition is true">
    <a href="#" ng-click="doSomething($event)" ng-disabled="true">
       <img src="myImage.png">
   </a>
</div>
<div ng-if="condition is false">
    <img src="myImage.png">
</div>

还有其他选项,如ng开关等

此处

<a ng-show="someBool" href="#" ng-click="doSomething($event)" ng-disabled="true">
  <img src="myImage.png">
</a>
<a ng-show="!someBool" class="greyed-out" href="#" ng-click="doSomething($event) $event.stopPropagation();" >
  <img src="myImage.png">
</a>

我希望这能奏效,我的意思是,这个想法是停止点击传播,这里有关于它的更有趣的解决方案,使用指令。我如何制作一个AngularJS指令来停止传播?。