AngularJS实现在ng-Options加上index的解决方法


Posted in Javascript onNovember 03, 2016

本文实例讲述了AngularJS实现在ng-Options加上index的解决方法。分享给大家供大家参考,具体如下:

Angularjs交流群中有位童学问道如何为Angular select的ng-Options像Angularjs的ng-Repeat一样加上一个索引$index.

其实对于这个问题来说Angular本身并未提供$index之类的变量供使用。但是也不是说对于这个问题我们就没有解决方案。

把这个问题换成角度来看,我们所需要的就是js数组的下标,所以我们如果我们能够在对象上加入下标,使用表达式作为option的label就能解决了。

但是第一印象让我想起的是js数组本来就是一个key/value的对象,只是key为数组下标而已,所以有了如下之设计:

html:

<pre>{{ a | json }}</pre>
<select ng-model="a" ng-options="value.field as getDesc1(key,value) for (key,value) in t"></select>

js:

$scope.getDesc1 = function(key, value) {
  return (parseInt(key, 10) + 1) + "->" + value.field;
};

可是不幸的是如果对于JavaScript你若将他作为key/value对象那么key将是无序的所以,出现了无序的下标如下:

<select ng-model="a" ng-options="l.field as getDesc1(key,value) for (key,value) in t " class="ng-valid ng-dirty">
 <option value="0" >1->jw_companyTalent</option>
 <option value="1" >2->jw_reportgroup</option>
 <option value="10" >11->jw_ads</option>
 <option value="11" >12->jw_jobcomment</option>
 <option value="12" >13->jw_companyInfo</option>
 ....
</select>

所以这样是无法解决的。还好博主还有一招,ngOptions支持Angularjs的filter,所以我们可以对数据源对象上加上一个order字段标示下标作为序号。并且你可以在一个2年前的Angular的issue中看到Angular已经fix issue,option会对数组进行按下标顺序生成。

html:

<pre>{{ b | json }}</pre>
<select ng-model="b" ng-options="l.field as getDesc(l) for l in t | index "></select>

js:

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
   $scope.t = [{
    "field": "jw_companyTalent"
   }, {
    "field": "jw_reportgroup"
   }];
   $scope.getDesc = function(l) {
    return l.order + "->" + l.field;
   };
}).filter("index", [
   function() {
    return function(array) {
     return (array || []).map(function(item, index) {
      item.order = index + 1;
      return item;
     });
    };
   }
]);

这下option是按照有序的生成,最后我们终于能完美解决了,所以本文也将收尾。在最后在附上可运行的demoplnkr ngOptions index;

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
Nov 07 Javascript
Javascript实现的分页函数
Dec 22 Javascript
用jscript实现新建和保存一个word文档
Jun 15 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
js创建对象的方式总结
Jan 10 Javascript
jquery easyUI中ajax异步校验用户名
Aug 19 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
微信小程序实现登录遮罩效果
Nov 01 Javascript
JavaScript代码模拟鼠标自动点击事件示例
Aug 07 Javascript
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 #Javascript
基于vuejs+webpack的日期选择插件
May 21 #Javascript
Vue.js创建Calendar日历效果
Nov 03 #Javascript
AngularJS中transclude用法详解
Nov 03 #Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 #Javascript
AngularJS控制器之间的通信方式详解
Nov 03 #Javascript
最细致的vue.js基础语法 值得收藏!
Nov 03 #Javascript
You might like
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
简单实用的全选反选按钮例子
2013/10/18 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
大学竞选班长演讲稿
2014/04/24 职场文书
任命书格式范文
2015/09/22 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
Python初识逻辑与if语句及用法大全
2021/08/07 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis