在AngularJS中引用数组的原始索引

时间:2014-02-20 15:52:40

标签: arrays angularjs

刚进入AngularJS,我有一个简单的问题。

当存在'orderBy'时,$ index引用已排序的数组。在排序之前引用回原始数组索引的最简单方法是什么。

<div ng-init="names=['Jack Doe','Dave Smith','Jone Johnson','Nancy Doe','Adam Smith']">
    <h3>Presenters</h3>
        <ul>
            <li ng-repeat="person in names | orderBy:'toString()'">
                [{{$index+1}} : {{person}}]
            </li>
        </ul>
</div>

2 个答案:

答案 0 :(得分:3)

我找到了答案。这很简单。

由于原始数组仍然完好无损,并且由于AngularJS允许在绑定中使用表达式,因此只需一个简单的Javascript indexOf方法即可。

<li ng-repeat="person in names | orderBy:'toString()'">
    [{{(names.indexOf(person)+1)}}  :  {{person}}]
</li>

感谢。

答案 1 :(得分:2)

如果原始订单具有商业含义,您可以将其存储在模型中。

function Person(name, order) {
    this.name = name || '';
    this.order = order;    
}

var names = ['Jack Doe', 'Dave Smith', 'Jone Johnson', 'Nancy Doe', 'Adam Smith'];

var people = [];
for(var i = 0; i < names.length; i++) {
    people.push(new Person(names[i], i + 1));
}

<li ng-repeat="person in people | orderBy:'name'">
    [{{person.order}} : {{person.name}}]
</li>