ng-options和ng-checked在表單中的高級運用(推薦)
AngularJS是當(dāng)前非常的流行的前端框架,它的語法糖非常多,也極大的方便了前端開發(fā)者,但是有著用法還是需要去琢磨一下的。
ng-options
在select表單控件中,總結(jié)一下目前的幾種寫法。
普通寫法
<select> <option value="test1">test1</option> <option value="test1">test1</option> <option value="test1">test1</option> <option value="test1">test1</option> </select>
優(yōu)點:簡單
缺點:
- 代碼很不簡潔,如果選項較多就會很亂
- 不方便渲染,如果option在變需要使用js動態(tài)加載
- 不方便存儲對象
使用ng-repeat
ng-repeat是angularJS中非常強(qiáng)大的一個directive,在渲染列表上極大的方便了前端開發(fā)者,那么由于有多個重復(fù)的option,當(dāng)然可以使用ng-repeat,用法如下:
<select> <option ng-repeat="option in options" value="{{option}}">{{option.name}}</option> </select> <script> $scope.options = [{id:1,name:'test1'},{id:2,name:'test2'},{id:3,name:'test3'}]; </scirpt>
優(yōu)點:
- 代碼簡介
- 可存儲對象,取值方便
缺點:
- 沒有默認(rèn)顯示!,在有些界面需求中,select可能是需要placeholder一樣的顯示提示效果的,那么使用這個方式顯示效果默認(rèn)是空白
- 無法通過ng-model來獲取當(dāng)前選擇的值
使用ng-options
這里使用一個年級、班級的選項來作為例子:即選擇年級之后再顯示對應(yīng)的可選班級。
<select ng-model="modal.grade" ng-change="modalChangeGrade()" ng-options="grade.gradeText for grade in modal.grades"> <option value="" disabled>請選擇</option> </select> <script> $scope.modal.grades = [ {id:1,gradeText:'初一',classes:[]}, {id:2,gradeText:'初二',classes:[]}, {id:3,gradeText:'高一'},classes:[]]; $scope.modalChangeGrade = function(){ //班級的HTML片段就不在這里寫了 $scope.modal.classes = $scope.modal.grade.classes; } </scirpt>
注:
“請選擇"的option需要有value,不然會報錯
如果要設(shè)置默認(rèn)選擇值,比如一開始就選擇"高一",則需要設(shè)置modal在數(shù)組里的對象。
$scope.modal.grade = $scope.modal.grades[2];//高一在數(shù)組的位置角標(biāo)為2
優(yōu)點:
- 代碼簡潔,易于維護(hù)
- 有默認(rèn)顯示
- 可以使用ng-modal準(zhǔn)確獲取當(dāng)前選擇的對象
ng-checked
checkbox和radio是我們經(jīng)常使用到的表單組件,那么如何使用angularJs簡潔方便的獲取當(dāng)前已選擇對象呢?
這里只說angularJs的用法:
下面依然以年級和班級為例:
<div ng-repeat="class in grade.classes" ng-click="class.is_checked=!class.is_checked"> <input type="checkbox" value="" ng-checked="class.is_checked"> {{class.id+'班'}} </div>
最后需要查看有哪些checkbox被選中時,只需要遍歷$scope.grade.classes數(shù)組查看有哪些對象的is_checked屬性為true即可。
radio的用法同理。
以上所述是小編給大家介紹的ng-options和ng-checked在表單中的高級運用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Bootstrap學(xué)習(xí)筆記之js組件(4)
這篇文章主要為大家詳細(xì)介紹了Bootstrap學(xué)習(xí)筆記之js組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06javascript中的綁定與解綁函數(shù)應(yīng)用示例
本文為大家詳細(xì)介紹下javascript中綁定與解綁函數(shù)在Ie及Mozilla中的應(yīng)用,感興趣的各位可以參考下哈,希望對大家有所幫助2013-06-06基于JavaScript實現(xiàn)頁面輪播圖漸變效果的示例代碼
這篇文章主要給大家分享如何使用JavaScript實現(xiàn)一個頁面輪播圖漸變效果,輪播圖是網(wǎng)頁開發(fā)中常見的功能之一,它能夠展示多個圖片或內(nèi)容,并以一定的時間間隔進(jìn)行自動切換,而通過添加漸變效果,可以讓切換過程更加平滑流暢,感興趣的小伙伴可以自己動手嘗試一下2023-10-10JS實現(xiàn)兩個大數(shù)(整數(shù))相乘
大數(shù),即超出語言所能表示的數(shù)字最大范圍的數(shù)字,那么如何實現(xiàn)兩個大數(shù)相乘呢?下面有個不錯的方法,大家可以參考下2014-04-04