Angular.js实现多个checkbox只能选择一个的方法示例


Posted in Javascript onFebruary 24, 2017

首先来看看效果

Angular.js实现多个checkbox只能选择一个的方法示例
效果

实现这样的效果,必须使用指令了,只有使用指令才能单独控制每一个scope。

示例代码如下:

<div class="form-group">
   <label class="col-sm-2 control-label">请选择文章主题色彩</label>
   <div class="col-sm-10" theme-group>
   <label class="i-switch m-t-xs m-r">
    <input type="checkbox" input-theme >
    <i></i>
   </label>
   <label class="i-switch bg-info m-t-xs m-r">
    <input type="checkbox" input-theme>
    <i></i>
   </label>
   <label class="i-switch bg-primary m-t-xs m-r">
    <input type="checkbox" input-theme >
    <i></i>
   </label>
   <label class="i-switch bg-danger m-t-xs m-r">
    <input type="checkbox" input-theme>
    <i></i>
   </label>
   </div>
</div>
(function () {
 angular
 .module("shishuoproject")
 .directive("themeGroup",function(){
  return{
  controller: function () {
   var scopeArray=[];
   this.addScope= function (scope) {
   var self=this;
   scopeArray.push(scope);
   scope.$on("$destory",function(){
    self.removeScope(scope);
   })
   };
   this.closeScope= function (scope) {
   //var l=scopeArray.length;
   angular.forEach(scopeArray, function (value) {
    if(value!=scope){
    value.flag=false;
    }
   })
   };
   this.removeScope= function (scope) {
   var index=scopeArray.indexOf(scope);
   if(index!==-1){
    scopeArray.splice(index,1);
   }
   };
   this.getIndex= function (scope) {
   var index=scopeArray.indexOf(scope);
   return index;
   }
  }
  }
 })
 .directive("inputTheme",function(){
  return{
  restrict:'EA',
  require:"^?themeGroup",
  template:'<input type="checkbox" ng-click="choseTheme()" ng-model="flag">',
  replace:true,
  scope:{},
  link: function (scope,element,attr,themeCon) {
   var colorArray=['#27c24c','#23b7e5','#7266ba',' #f05050'];
   themeCon.addScope(scope);
   scope.choseTheme= function () {
   themeCon.closeScope(scope);
   var index=themeCon.getIndex(scope);
   var color=colorArray[index];
   scope.$emit("getArticleThemeColor",{'color':color});
   console.log(scope.flag);
   };
  }
  }
 })
})()

这里简单说一下,实现的主要思想就是,通过指令单独生成scope,每一个指令都是一个单独的scope,这样每个ng-modal都独立出来了,然后通过继承一个总的指令来实现控制。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用Angular.js能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
javascript实现轮显新闻标题链接
Aug 13 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
使用JavaScript+canvas实现图片裁剪
Jan 30 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
vue router路由嵌套不显示问题的解决方法
Jun 17 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
Nov 27 Javascript
Angular6 写一个简单的Select组件示例
Aug 20 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 Javascript
Nuxt 项目性能优化调研分析
Nov 07 Javascript
vue前端工程的搭建
Mar 31 Vue.js
canvas实现图片根据滑块放大缩小效果
Feb 24 #Javascript
详解JS中的立即执行函数
Feb 24 #Javascript
几行js代码实现自适应
Feb 24 #Javascript
javascript 删除数组元素和清空数组的简单方法
Feb 24 #Javascript
JavaScript基本类型值-Number类型
Feb 24 #Javascript
AngularJS Toaster使用详解
Feb 24 #Javascript
js获取隐藏元素的宽高
Feb 24 #Javascript
You might like
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
详解用node编写自己的cli工具
2017/05/23 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
详解Python3.1版本带来的核心变化
2015/04/07 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
毕业生文员求职信
2013/11/03 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
自动一体化专业求职信
2014/03/15 职场文书
五四青年节演讲稿
2014/05/26 职场文书
开票员岗位职责
2015/02/12 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
销售口号霸气押韵
2015/12/24 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js