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获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 Javascript
JavaScript中this详解
Sep 01 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
angular2模块和共享模块详解
Apr 08 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
js实现每日签到功能
Nov 29 Javascript
详解js创建对象的几种方法及继承
Apr 12 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 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的urlencode()URL编码函数浅析
2011/08/09 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
python模拟enum枚举类型的方法小结
2015/04/30 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
高中毕业生个人自我鉴定
2013/11/24 职场文书
小学生元旦感言
2014/02/26 职场文书
会计工作岗位职责
2015/02/03 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书