码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-12-10 19:13:06      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:line   判断   ctr   article   支持   tail   搜索   解决   返回   

 

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

业务需求是这样的, 按钮被点击一次之后就设置为禁用状态, 以阻止多次无效的点击。但现在很多框架都用 <div> 或者其他标签来实现 button 效果。我并不是专业的UI, 不知道这样做到底好不好,该怎么样就怎么样呗。

在 <button> 上面时 ng-disabled 一切正常(因为 <button> 支持 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 变为 <div>后, ng-disabled 标志就不起作用了。它将元素设置为禁用状态(disabled), 但点击的时候依然会触发 ng-click 。

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

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

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


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

标签:line   判断   ctr   article   支持   tail   搜索   解决   返回   

原文地址:http://www.cnblogs.com/yu-709213564/p/6156088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!