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 相关文章推荐
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
Jul 27 Javascript
js获取单选框或复选框值及操作
Dec 18 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
javascript 实现map集合
Apr 03 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
PHP自动加载autoload和命名空间的应用小结
Dec 01 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
微信小程序实现轮播图指示器
Jun 25 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
纯javascript版日历控件
2016/11/24 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
浅析Python requests 模块
2020/10/09 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
师范生自荐信
2013/10/27 职场文书
应届大学生自荐信
2013/12/05 职场文书
班主任先进事迹材料
2014/12/17 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Python 多线程处理任务实例
2021/11/07 Python