玩转ng-options小伎俩(转载+学习整理)
来源:互联网 发布:帝国cms 自动生成标签 编辑:程序博客网 时间:2024/06/11 03:10
前言
最近做的一个小项目进入测试阶段,一个下拉列表提出了优化需求,需要把循环生成的数组对象的两个属性值都显示到下拉列表内容中,且在调用接口查询时只能把选中项的其中一个属性值作为参数传参,实现过程中幸有老司机帮助,但我却不太看得懂老司机帮忙改的代码!
所幸找到一篇介绍ng-options四种用法的文章,学有所得,不亦乐乎,以此为记!
对文章来源作者分享的知识表示感谢~原文链接:http://www.jb51.net/article/67909.htm
正文
上代码:
<!DOCTYPE html><html lang="en" ng-app = "testNgOptions"><head> <meta charset="UTF-8"> <title>Document</title> <style> select{ width: 200px; height: 30px; } </style> <script src = "lib/angular.min.js"></script> <script> var app = angular.module('testNgOptions',[]); app.controller('fatherCtrl',['$rootScope',function($rootScope){ $rootScope.optData = [{ id: 10001, MainCategory: '男', ProductName: '水洗T恤', ProductColor: '白' },{ id: 10002, MainCategory: '女', ProductName: '圓領短袖', ProductColor: '黃' },{ id: 10003, MainCategory: '女', ProductName: '圓領短袖', ProductColor: '黃' }]; }]); app.controller('testNgOptionsCtrl1',['$scope',function($scope){ $scope.selected = ''; }]); app.controller('testNgOptionsCtrl2',['$scope',function($scope){ $scope.selected = ''; }]); app.controller('testNgOptionsCtrl3',['$scope',function($scope){ $scope.selected = ''; }]); app.controller('testNgOptionsCtrl4',['$scope',function($scope){ $scope.selected = ''; }]); </script></head><body ng-controller = "fatherCtrl"> <!-- 1.基本下拉效果(lable for value in array) 其中select标签中的ng-model属性必须有,其值为选中的对象或属性值。 --> <div ng-controller = "testNgOptionsCtrl1"> <p>1.基本下拉效果(lable for value in array)</p> <p>选项:{{selected}}</p> <select ng-model="selected" ng-options="o.id for o in optData"> <option value="">请选择</option> </select> </div> <!-- 2.自定义下拉显示名称(label for value in array) label可以根据需要拼接出不同的字符串 --> <div ng-controller = "testNgOptionsCtrl2"> <p>2.自定义下拉显示名称 label可以根据需求拼接出不同的字符串(label for value in array)</p> <p>选项:{{selected}}</p> <select ng-model="selected" ng-options="(o.ProductColor+'-'+o.ProductName) for o in optData"> <!-- <select ng-model="selected" ng-options="o.id for o in optData"> --> <option value="">请选择</option> </select> </div> <!-- 第3种用法:ng-options 选项分组 group by分组项 --> <div ng-controller = "testNgOptionsCtrl3"> <p>3.ng-options 选项分组(usage:label group by groupName for value in array)</p> <p>选项:{{selected}}</p> <select ng-model="selected" ng-options="(o.ProductColor+'-'+o.ProductName) group by o.MainCategory for o in optData"> <option value="">-- 请选择 --</option> </select> </div> <!-- 第4种用法:ng-options 自定义ngModel的绑定 下面selected的值为optData的id 效果 http://sandbox.runjs.cn/show/nhi8ubrb --> <div ng-controller = "testNgOptionsCtrl4"> <p>4.ng-options 自定义ngModel的绑定(usage:select as label for value in array)</p> <p>选项:{{selected}}</p> <select ng-model="selected" ng-options="o.id as o.ProductName for o in optData"> <option value="">-- 请选择 --</option> </select> </div></body></html>
代码运行效果
同样从来源文章了解到RunJS,可以展示代码运行效果,方便日后温故知新,以及更便利地分享知识,我也照单全收,照猫画虎,学着用起来吧!
预览代码效果:
http://sandbox.runjs.cn/show/r512c74a
总结
ng-options 四种用法:
1.基本用法(显示 o 对象的某一个属性值作为下拉名称):
ng-options = ” o.attr for o in dataArr “
2.显示更多:同一对象显示更多下拉名称(比如需要显示 o 对象的两个或更多个属性值作为一个下拉列表项):
ng-options = ” (o.attr1 + ‘-’ + o.attr2) for o in dataArr “
3.选项分组(将下拉选项按照 o 对象某一属性分组显示):
ng-options = ” (o.attr1 + ‘-’ + o.attr2) group by o.attr3 for o in dataArr “
4.自定义ngModel的绑定:
ng-options = ” o.attr1 as o.attr2 for o in dataArr ”
这时,o.attr1 是 ng-model 绑定的值,o.attr2 是下拉列表显示的值。
注意事项:
1.select标签中的ng-model属性必须有
2.前3种方法 ng-model 绑定的都是一个对象,被选中的那个下拉列表项对应的对象;只有第4种用法 ng-model 绑定的是对象的一个属性值,也就是自定义的 o.attr1 as o.attr2 for o in dataArr 中的 o.attr1 。
后记
原来传参时只传一个属性值这里老司机用的就是第4种用法,好吧,我原谅自己上午的懵圈了,之前这个知识点全盲,不过现在会啦~另一个需求同时显示循环中一个对象的两个属性值,第2种方法也可以完美满足!
- 玩转ng-options小伎俩(转载+学习整理)
- AngularJS杂记9----玩转ng-options指令:工作中的常见操作
- angularjs select标签 ng-options ng-change学习
- 【记录】Python小伎俩
- 关于“自动生成”的一些小伎俩(一)
- 呵呵 小伎俩 但很凑效
- Angularjs ng-options用法
- angular--ng-options
- angular的ng-options
- ng-options用法详解
- AngularJs ng-options
- ng-options 用法详解
- angular ng-options
- ng-model-options
- ng-options用法详解
- ng-options用法详解
- ng-grid options 一览
- ng-options no-repeat
- 将bmp图像转换为ppm格式
- web项目部署补丁包
- MySQL各种时间取数函数
- python源码剖析笔记(二)
- ReactiveCocoa 基本使用回忆录
- 玩转ng-options小伎俩(转载+学习整理)
- CocosCreator学习5:实现物体拖动
- 解决Android页面跳转时回退到桌面的问题
- Spring简介
- DOM操作表格
- 高并发Java 八 NIO和AIO
- windows下wamp安装php-redis扩展
- 大型网站架构之分布式消息队列
- Unity 3D