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 相关文章推荐
理解JavaScript的caller,callee,call,apply
Apr 28 Javascript
有道JavaScript监听浏览器的问题
Jun 23 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
Jan 09 Javascript
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
js中int和string数据类型互相转化实例
Jan 16 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
EXTJS7实现点击拖拉选择文本
Dec 17 Javascript
如何制作自己的原生JavaScript路由
May 05 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
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jQuery的三种$()
2009/12/30 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python模拟表单提交登录图书馆
2018/04/27 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
初学者学习Python好还是Java好
2020/05/26 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
护士自我评价
2014/02/01 职场文书
双语教学实施方案
2014/03/23 职场文书
红色旅游心得体会
2014/09/03 职场文书
经验交流材料格式
2014/12/30 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Javascript 解构赋值详情
2021/11/17 Javascript