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 相关文章推荐
javascript parseInt与Number函数的区别
Jan 21 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 Javascript
js中的replace方法使用介绍
Oct 28 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
vue使用nprogress实现进度条
Dec 09 Javascript
js实现自动播放匀速轮播图
Feb 06 Javascript
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通用防注入程序 推荐
2011/02/26 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
如何用Python合并lmdb文件
2018/07/02 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
django从后台返回html代码的实例
2020/03/11 Python
虚拟机下载python是否需要联网
2020/07/27 Python
详解Python中的Lock和Rlock
2021/01/26 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
2014新课程改革心得体会
2014/03/10 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
2015年老干部工作总结
2015/04/23 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python