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中的数学函数
Apr 04 Javascript
使用JSLint提高JS代码质量方法分享
Dec 16 Javascript
href下载文件根据id取url并下载
May 28 Javascript
jquery text()方法取标签中的文本
Jul 25 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
JavaScript使用键盘输入控制实现数字验证功能
Aug 19 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
深入理解node.js之path模块
May 03 Javascript
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 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
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python字符串格式化的方法(两种)
2017/09/19 Python
python使用锁访问共享变量实例解析
2018/02/08 Python
python实现证件照换底功能
2019/08/20 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
浅谈django channels 路由误导
2020/05/28 Python
python实现定时发送邮件
2020/12/23 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
Java面试题及答案
2012/09/08 面试题
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
优秀部门获奖感言
2014/02/14 职场文书
计生专干事迹
2014/05/28 职场文书
升国旗演讲稿
2014/09/05 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
python Polars库的使用简介
2021/04/21 Python