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之HTMLCollection接口代码
Apr 27 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
May 06 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
JS运动基础框架实例分析
Mar 03 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 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获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
js CSS操作方法集合
2008/10/31 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
关心下一代工作先进事迹
2014/08/15 职场文书
三八活动策划方案
2014/08/17 职场文书
新生开学寄语大全
2015/05/28 职场文书
李强为自己工作观后感
2015/06/11 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js