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 相关文章推荐
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
JavaScript数组操作详解
Feb 04 Javascript
Move.js入门
Feb 08 Javascript
Vue.js实现价格计算器功能
Mar 30 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 Javascript
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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
php curl 上传文件代码实例
2015/04/27 PHP
JS 去除Array中的null值示例代码
2013/11/20 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python中dict()的高级用法实现
2019/11/13 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Python 没有main函数的原因
2020/07/10 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
会计专业的自荐信
2013/12/12 职场文书
《童趣》教学反思
2014/02/19 职场文书
设计顾问服务计划书
2014/05/04 职场文书
硕士生找工作求职信
2014/07/05 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫