首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使ng-click事件具有条件?

如何使ng-click事件具有条件?
EN

Stack Overflow用户
提问于 2013-01-27 16:34:23
回答 6查看 188.8K关注 0票数 118

我在ng-repeat中有以下代码:

代码语言:javascript
复制
<a href="#" class="disabled" ng-click="doSomething(object)">Do something</a>

当按钮有 class="disabled"**?**时,如何设置按钮被禁用的条件?

或者有没有一种方法可以在Javascript中做到这一点,这样看起来就像:

代码语言:javascript
复制
$('.do-something-button').click(function(){
  if (!$(this).hasClass('disabled')) {
    do something
  }
});
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-01-27 17:41:30

除了指令之外,在任何地方使用DOM操作(包括属性检查)都是不好的。您可以在作用域中添加一些值,以指示是否应禁用链接。

但另一个问题是,除了表单控件之外,ngDisabled不能在任何地方工作,因此您不能将其与一起使用,但您可以将其与一起使用,并将其样式化为链接。

另一种方法是使用像isDisabled || action()这样的表达式的惰性计算,因此如果isDisabled为真,则不会调用操作。

两种解决方案都在这里:http://plnkr.co/edit/5d5R5KfD4PCE8vS3OSSx?p=preview

票数 208
EN

Stack Overflow用户

发布于 2015-07-10 20:17:39

我们可以在不使用禁用类的情况下有条件地添加ng-click事件。

HTML:

代码语言:javascript
复制
<div ng-repeat="object in objects">
<span ng-click="!object.status && disableIt(object)">{{object.value}}</span>
</div>
票数 47
EN

Stack Overflow用户

发布于 2017-01-28 11:11:35

我使用&&表达式,它非常适合我。

例如,

代码语言:javascript
复制
<button ng-model="vm.slideOneValid" ng-disabled="!vm.slideOneValid" ng-click="vm.slideOneValid && vm.nextSlide()" class="btn btn-light-green btn-medium pull-right">Next</button>

如果vm.slideOneValid为false,则不会触发表达式的第二部分。我知道这是将逻辑放到DOM中,但这是一种快速、肮脏的方式,可以禁用ng,然后单击以放置更好的内容。

只需记住将ng-model添加到元素中,就可以禁用ng。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14545744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档