写点什么

AngularJS 进阶 (二十四)AngularJS 与单选框及多选框的双向动态绑定

  • 2022-12-05
    江苏
  • 本文字数:1239 字

    阅读完需:约 4 分钟

AngularJS进阶(二十四)AngularJS与单选框及多选框的双向动态绑定

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 作用域的问题。


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


核心源码 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>
复制代码


发布于: 刚刚阅读数: 6
用户头像

No Silver Bullet 2021-07-09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
AngularJS进阶(二十四)AngularJS与单选框及多选框的双向动态绑定_AngularJS_No Silver Bullet_InfoQ写作社区