没有过滤器的ng-repeat索引

时间:2015-01-02 21:45:38

标签: angularjs-ng-repeat ng-repeat

我正在寻找一种从完整的ng-repeat数组而不是过滤的数组中获取对象索引的本地方法。

让我们考虑以下数组:

{'1','2','3','4'} ,各自的指数分别为0,1,2和3.

我们还考虑一个自定义过滤器,它返回以下数组:

{'1','3'} ,各自的指数为0,1。

现在过滤数组中的索引'3'是1.但是,我要找的是完整数组中的索引2。

那么,如何从完整数组而不是过滤数组中获取对象的索引?我想避免在每个应用的过滤器上查找完整数组中的对象。

注意:对象不会也不会有ID。

Representative Fiddle

2 个答案:

答案 0 :(得分:1)

如何使用初始步骤来包含索引:

angular.module('testApp', [])
.controller('test', ['$scope', function ($scope) {
    $scope.customFilter = function (data) {
        return data.val.no != '2' && data.val.no != '4';
    };

    $scope.withIndices = function (ary) {
        return ary.map(function (el, i) {
            return { i: i, val: el };
        });
    };
}]);
<ul ng-controller="test">
  <li ng-repeat="x in withIndices(names) | filter:customFilter">
  Item: {{ x.val.no }} index: {{x.i}} </li>
</ul>

Modified example

答案 1 :(得分:0)

var app = angular.module('myapp',[]);

app.controller('MainCtrl',函数($ scope){
  $ scope.full = ['10','2','30','4'];
  $ scope.filter = [ '10', '30']
});

模板: &lt; div ng-controller =“MainCtrl”&gt;
&lt; div ng-repeat =“i in filter”&gt;
{{full.indexOf(ⅰ)}}
&LT; / DIV&GT;
&LT; / DIV&GT;