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

简介: 不知道这算不算 Angular.js 的一个bug。但搜索一番后找到了一个变通的解决办法。业务需求是这样的, 按钮被点击一次之后就设置为禁用状态, 以阻止多次无效的点击。但现在很多框架都用 或者其他标签来实现 button 效果。

不知道这算不算 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, 不再计算右边表达式。

欢迎加入: 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

目录
相关文章
|
JavaScript 前端开发
JS中 require 与 import 的区别
JS中 require 与 import 的区别
|
数据采集 存储 SQL
基于Apache doris的元数据管理系统
什么是元数据?元数据和数据的区别是什么?元数据有什么作用。
1557 0
基于Apache doris的元数据管理系统
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
|
数据采集 人工智能 数据可视化
云上数据可视化:解锁数据价值,洞见未来趋势
五、未来展望 随着技术的不断进步和应用场景的不断拓展,云上数据可视化将迎来更加广阔的发展前景。未来,云上数据可视化将更加注重数据的实时性、交互性和智能化。同时,随着人工智能、大数据等技术的深度融合,云上数据可视化将更加
573 7
|
11月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
744 1
|
JavaScript
Vue项目如何生成树形目录结构
这篇文章介绍了如何在Vue项目中生成树形目录结构,通过安装并使用`mddir`命令行工具来创建一个`directoryList.md`文件,从而快速获取项目的树形目录列表。
Vue项目如何生成树形目录结构
|
前端开发 easyexcel 关系型数据库
EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
【5月更文挑战第11天】EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
545 1
|
Java 测试技术 数据库连接
功能测试如何做?
功能测试如何做?
353 0
|
存储 分布式计算 调度
Spark任务调度与数据本地性
Spark任务调度与数据本地性
|
存储 JSON 关系型数据库
1688订单详情对接及实现方案
1688作为中国最大的B2B电子商务平台之一,提供了丰富的商品信息和订单详情。通过与1688订单详情接口的对接,电商企业可以实时获取订单详细信息,以便更好地了解客户需求、优化运营策略以及提高服务质量。本文将详细介绍如何实现1688订单详情的对接,包括注册与获取API密钥、环境准备、接口调用与数据解析等步骤,并提供示例代码供参考。

热门文章

最新文章