ng-options和ng-checked在表单中的高级运用(推荐)


Posted in Javascript onJanuary 21, 2017

AngularJS是当前非常的流行的前端框架,它的语法糖非常多,也极大的方便了前端开发者,但是有着用法还是需要去琢磨一下的。

ng-options

在select表单控件中,总结一下目前的几种写法。

普通写法

<select>
  <option value="test1">test1</option>
  <option value="test1">test1</option>
  <option value="test1">test1</option>
  <option value="test1">test1</option>
</select>

优点:简单

缺点:

  • 代码很不简洁,如果选项较多就会很乱
  • 不方便渲染,如果option在变需要使用js动态加载
  • 不方便存储对象

使用ng-repeat

ng-repeat是angularJS中非常强大的一个directive,在渲染列表上极大的方便了前端开发者,那么由于有多个重复的option,当然可以使用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>

优点:

  • 代码简介
  • 可存储对象,取值方便

缺点:

  • 没有默认显示!,在有些界面需求中,select可能是需要placeholder一样的显示提示效果的,那么使用这个方式显示效果默认是空白
  • 无法通过ng-model来获取当前选择的值

使用ng-options

这里使用一个年级、班级的选项来作为例子:即选择年级之后再显示对应的可选班级。

<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,不然会报错

如果要设置默认选择值,比如一开始就选择"高一",则需要设置modal在数组里的对象。

$scope.modal.grade = $scope.modal.grades[2];//高一在数组的位置角标为2

优点:

  • 代码简洁,易于维护
  • 有默认显示
  • 可以使用ng-modal准确获取当前选择的对象

ng-checked

checkbox和radio是我们经常使用到的表单组件,那么如何使用angularJs简洁方便的获取当前已选择对象呢?

这里只说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数组查看有哪些对象的is_checked属性为true即可。

radio的用法同理。

以上所述是小编给大家介绍的ng-options和ng-checked在表单中的高级运用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
Mar 07 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
Nov 02 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
vue使用showdown并实现代码区域高亮的示例代码
Oct 17 Javascript
返回上一个url并刷新界面的js代码
Sep 12 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
vue实现添加标签demo示例代码
Jan 21 #Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 #Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 #Javascript
Bootstrap框架安装使用详解
Jan 21 #Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 #Javascript
微信小程序 九宫格实例代码
Jan 21 #Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 #Javascript
You might like
PHP类中Static方法效率测试代码
2010/10/17 PHP
php写的AES加密解密类分享
2014/06/20 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
详解js的六大数据类型
2016/12/27 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
vue实现锚点定位功能
2021/06/29 Vue.js