# AngularJS與單選框及多選框的雙向動態綁定
贈人玫瑰,手留余香。若您感覺此篇博文對您有用,請花費2秒時間點個贊,您的鼓勵是我不斷前進的動力,共勉!
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>
~~~
參考文獻:
[http://www.oschina.net/translate/handling-checkboxes-and-radio-buttons-in-angular-forms](http://www.oschina.net/translate/handling-checkboxes-and-radio-buttons-in-angular-forms)
[http://www.cnblogs.com/CheeseZH/p/4517701.html](http://www.cnblogs.com/CheeseZH/p/4517701.html)
[http://www.bubuko.com/infodetail-954078.html](http://www.bubuko.com/infodetail-954078.html)
?
- 前言
- (一)深入理解ANGULARUI路由_UI-ROUTER
- (二)AngularJS路由問題解決
- (四)ANGULAR.JS實現下拉菜單單選
- (五)Angular實現下拉菜單多選
- (六)AngularJS+BootStrap實現彈出對話框
- (七)實現根據不同條件顯示不同控件
- (十)AngularJS改變元素顯示狀態
- (十四)AngularJS靈異代碼事件
- (十七)在AngularJS應用中實現微信認證授權遇到的坑
- (十八)在AngularJS應用中集成科大訊飛語音輸入功能
- (十九)在AngularJS應用中集成百度地圖實現定位功能
- (二十一)Angularjs中scope與rootscope區別及聯系
- (二十三)ANGULAR三宗罪之版本陷阱
- (二十四)AngularJS與單選框及多選框的雙向動態綁定
- (二十五)JS實現導入文件功能
- (二十七)實現二維碼信息的集成思路
- (二十八)解決AngualrJS頁面刷新導致異常顯示問題
- (二十九)AngularJS項目開發技巧之localStorage存儲
- (三十)AngularJS項目開發技巧之圖片預加載
- (三十一)AngularJS項目開發技巧之獲取模態對話框中的組件ID
- (三十二)書海拾貝之特殊的ng-src和ng-href
- (三十三)書海拾貝之簡介AngularJS中使用factory和service的方法
- (三十四)Angular數據更新不及時問題探討
- (三十六)AngularJS項目開發技巧之利用Service&Promise&Resolve解決圖片預加載問題(后記)