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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
Nov 30 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
Javascript中parseInt的正确使用方式
Oct 17 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
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安装全攻略:APACHE
2006/10/09 PHP
文章推荐系统(三)
2006/10/09 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python中__slots__用法实例
2015/06/04 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Python守护进程实现过程详解
2020/02/10 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
村官工作鉴定评语
2014/01/27 职场文书
政府信息公开实施方案
2014/05/09 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
税务会计岗位职责
2015/04/02 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers