ng-disabled 不起作用的解决办法

不知道这算不算 Angular.js 的一个bug。但搜索一番后找到了一个变通的解决办法。

业务需求是这样的,按钮被点击一次之后就设置为禁用状态,以阻止多次无效的点击。但现在很多框架都用

或者其他标签来实现 button 效果。我并不是专业的UI,不知道这样做到底好不好,该怎么样就怎么样呗。

在 上面时 ng-disabled 一切正常(因为 支持 disabled ):

<button ng-click="do_something()" ng-disabled="button_clicked">Click Me</button>

相关的逻辑代码如下:

angular.module('ngToggle',[])
    .controller('AppCtrl',['$scope',function($scope){
    $scope.button_clicked = false;
    $scope.do_something = function() {
    alert("Clicked!");
    $scope.button_clicked = true;
    return false;
    }
}]);

但将 button 变为

后,ng-disabled 标志就不起作用了。它将元素设置为禁用状态(disabled),但点击的时候依然会触发 ng-click 。

解决办法是在 ng-click 里面先判断参数的值:

<div ng-click="button_clicked || do_something()" ng-disabled="button_clicked">Click Me</div>

很简单也很有效,一个短路或。 短路或 || 的运算规则是,如果左边的表达式为 true,则返回true,不再计算右边表达式。

欢迎加入: CNC开源组件开发交流群 316630025

原文链接: http://baudehlo.com/2014/02/24/angular-js-ng-click-still-fires-when-div-is-ngdisabled/

原文日期: 2014年02月24日

翻译日期: 2016年01月07日

翻译人员: 铁锚 http://blog.csdn.net/renfufei

确实有效果,转载一下

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...