在ng-options中偏移索引为1

时间:2015-04-14 19:56:56

标签: angularjs

我有一个由以下对象填充的选择下拉列表:

<select class="form-control" ng-model="nonexistantmodel" ng-options="idx as idx+1 + order for (idx, order) in amazon.orders">

我正在尝试从1开始显示数组索引。(0,1,2,3变为1,2,3,4)

但当然idx+1只会加入字符串,最终会像01, 11, 21, 31

一样

我也尝试应用number过滤器,但无济于事:

(idx+1 | number: 0)(idx | number: 0) + 1(idx | number: 0) + (1 | number: 0)

但他们似乎只是加入了相同结果的字符串。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

问题是Angular将数组的索引视为字符串。您需要将它传递给一个函数,该函数将其解析为整数并向其添加1,并返回该结果。

我建议制作一个简单的过滤器:

app.filter('plus1', function() {
  return function(input) {
    var i = parseInt(input, 10);
    return i+1;
  };
});

然后你的表情将如下所示:

idx as (idx|plus1) + order for (idx, order) in amazon.orders

或者你可以把这样的东西放在你的控制器中:

$scope.indexBy1 = function(index) {
  var i = parseInt(index, 10);
  return i+1;
};

然后ng-options中的表达式将如下所示:

idx as indexBy1(idx) + order for (idx, order) in amazon.orders

Here's a JSBin.

答案 1 :(得分:0)

只需使用idx+1idx*1+1idx/1+1更改idx-0+1

查看live example