刚进入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>
答案 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>