【发布时间】:2015-03-06 23:08:33
【问题描述】:
我正在尝试生成一个术语列表及其定义,但在每个字母部分的开头放置一个标题。浏览器
一个
苹果
B
香蕉
为此,我有以下代码:
<div ng-repeat="definition in definitions">
<div ng-if="firstLetterOfTerm(definitions[$index])!=firstLetterOfTerm(definitions[$index-1])">
<h1>{{firstLetterOfTerm(definitions[$index])}}<hr></h1>
</div>
<div>{{definition.term}}</div>
</div>
如果订购了definitions,这将非常有用。但如果不是,这不起作用。 IE考虑列表
["Banana", "Apple"]
根据我目前的逻辑,这将产生以下列表:
一个
香蕉
B
苹果
那是因为当我执行firstLetterOfTerm(definitions[$index]) 时,$index 指向原始的无序列表。有什么办法可以让它正确定位$index?或者也许是一种不同的方式来构建这个产生相同结果的解决方案
注意:我不想预先对列表进行预排序,因为它可能非常大。
【问题讨论】:
-
为什么不使用
sort()来确保元素始终按照您想要的方式排序? -
@kidA 如果你能读到我的问题的结尾,你会发现。
-
无论您是为了方便而预先对它进行排序,还是让
ng-repeat为您排序,您的应用程序仍在以某种方式对其进行排序,因此它是否“相当大”并不重要。” -
@rgthree 如果我只是按照给定的顺序拿它,它就不会排序。
-
我读过它,但我不明白如果它很大有什么不同。
标签: javascript html angularjs angularjs-ng-repeat angularjs-orderby