AngularJS 单选框及多选框的双向动态绑定


Posted in Javascript onApril 20, 2017

AngularJS 在 <input type="text" /> 中实现双向动态绑定十分简单,如下所示:

<input type="text" ng-model="topic.title" />

只需要用ng-model 与 $scope 中的属性对应,即实现了type=”text” 的双向动态绑定。当 <input type="radio" /> 及 <input type="checkbox" /> 时情况略有不同:

1. <inputtype="radio" />

<input type="radio" name="person-action" value="go_home" ng-model="person.action" />回家 
<input type="radio" name="person-action" value="go_to_school" ng-model="person.action" />回学校

通过 value 属性指定选中状态下对应的值,并通过 ng-model 将单选框与 $scope 中的属性对应,便实现了 type=”radio” 时的双向动态绑定。

2. <input type="checkbox" />

<input type="checkbox" ng-true-value="true" ng-false-value="false" ng-model="phone.play_sound" />铃声 
<input type="checkbox" ng-true-value="true" ng-false-value="false" ng-model="phone.play_vibrate" />震动 
<input type="checkbox" ng-true-value="true" ng-false-value="false" ng-model="phone.play_lights" />呼吸灯

通过AngularJS 的内置指令 ng-true-value 和 ng-false-value ,指定多选框在选中和未选中状态下对应的值,再通过ng-model 将其与 $scope 中的属性对应,便实现了type=”checkbox” 的双向动态绑定。

但是理想跟现实总是相差太多,在实际操作过程中还是出现了问题。应该是ng-repeat中scope作用域的问题。

经过一番搜索、调试,自己终于将此问题解决了,效果图如下:

AngularJS 单选框及多选框的双向动态绑定

核心源码

js

var str = ""; // 原来存放选中的项 
$scope.Selected = false; //默认未选中 
var choseArr=[]; // 定义数组用于存放前端显示 
$scope.check = function(z,x){ 
console.log("HUY:"); 
console.log(z); 
console.log("HUYU:"); 
console.log(x); 
if (x == false) { // 选中 
   str = str + z + ','; 
  } else { 
   str = str.replace(z + ',', ''); // 取消选中 
  } 
  choseArr = (str.substr(0,str.length-1)).split(','); 
 console.log("HY:"); 
 console.log(choseArr); 
 $scope.number_request = choseArr.length; // 前端显示所选数量 
 $scope.content_request = choseArr; // 前端显示所选请求ID 
};

Html

<tr ng-repeat="item in querydata"> 
<td ng-bind="$index+1">1</td> 
 <td><a ui-sref="#">{{item.postid}}</a></td> 
  <td>{{item.medname}}</td> 
  <td>{{item.medfact}}</td> 
  <td>{{item.medcnt}}</td>  
  <td>{{item.remark}}</td>   
  <td>{{item.tel}}</td>   
  <td>{{item.post_time}}</td> 
  <td><input id={{item.postid}} type="checkbox" ng-model="Selected" ng-click="check(item.postid,Selected)" /></td>   
</tr>

参考文献:

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
认识延迟时间为0的setTimeout
May 16 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
Node.js简单入门前传
Aug 21 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
小程序中的箭头函数的具体使用
Jun 19 Javascript
jQuery实现开关灯效果
Aug 02 jQuery
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
Vue如何引入远程JS文件
Apr 20 #Javascript
AngularJS改变元素显示状态
Apr 20 #Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 #Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 #Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 #Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 #Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 #Javascript
You might like
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
回调函数的意义以及python实现实例
2017/06/20 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
python 字符串常用函数详解
2019/09/11 Python
python中有关时间日期格式转换问题
2019/12/25 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
Python里面如何实现tuple和list的转换
2012/06/13 面试题
shell变量的作用空间是什么
2013/08/17 面试题
欢迎领导检查标语
2014/06/27 职场文书
物理课外活动总结
2014/08/27 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
刮痧观后感
2015/06/05 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
诚信教育主题班会
2015/08/13 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
如何使用flask将模型部署为服务
2021/05/13 Python
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Mysql中常用的join连接方式
2022/05/11 MySQL