没有过滤器的 ng-repeat 索引

Index of ng-repeat without filter

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

让我们考虑以下数组:

{'1','2','3','4'} 分别为 0、1、2 和 3。

我们还考虑一个自定义过滤器,其中 returns 以下数组:

{'1','3'} 各自的索引为 0、1。

现在过滤后的数组中“3”的索引为 1。但是,我要查找的是完整数组中的索引 2。

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

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

Representative Fiddle

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

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

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

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

模板:



{{full.indexOf(i)}}