javascript代码实例教程-为Angularjs ngOptions加上index解决方案

发布时间:2019-02-07 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-为Angularjs ngOptions加上index解决方案脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 今天在Angularjs交流群中有位童学问道如何为Angular select的ngOptions像Angularjs的ngRePEat一样加上一个索引$index.

 

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

 

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

 

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

 

htML:

 

<PRe></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-&amp;gt;jw_companyTalent</option>

  <option value="1"  >2-&gt;jw_reportgroup</option>

  <option value="10" >11-&gt;jw_ads</option>

  <option value="11" >12-&gt;jw_jobcomment</option>

  <option value="12" >13-&gt;jw_companyInfo</option>

  ....

</select>

复制代码

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

 

html:

 

<pre></pre>

 

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

js:

 

复制代码

 VAR app = angular.module(&#39;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是按照有序的生成,最后我们终于能完美解决了,所以本文也将收尾。在最后在附上可运行的demo plnkr ngOptions index;

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-为Angularjs ngOptions加上index解决方案全部内容,希望文章能够帮你解决javascript代码实例教程-为Angularjs ngOptions加上index解决方案所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。