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 相关文章推荐
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
js获取会话框prompt的返回值的方法
Jan 10 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 Javascript
JS实现横向轮播图(初级版)
Jun 24 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计算函数执行时间的方法
2015/03/20 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
js登录弹出层特效
2014/03/07 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
js编写选项卡效果
2017/05/23 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
演讲稿的格式及范文
2014/08/22 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
个人催款函范文
2015/06/23 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
解析MySQL索引的作用
2022/03/03 MySQL
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS