这个问题是related to another question我问过。
我设法让AngularUI Typeahead工作。但是,我的orderBy过滤器似乎没有做任何事情。
此选择框可正确排序所有内容(距离是自定义函数):
<select ng-model="fromStation"
ng-options="item.name for item in stations.station | orderBy:distance">
但是这种类型:
<input type="text" ng-model="fromStation"
typeahead="item as item.name for item in stations.station
| filter:$viewValue | limitTo:8 | orderBy:distance">
根本不改变顺序(即它按字母顺序排序)。我想要实现的是,当用户键入a的第一个字母 - 在这种情况下 - 火车站时,最接近他的包含该字母的站将首先出现。是否可以使这项工作或此功能尚未提供?
答案 0 :(得分:3)
如果没有看到最小的重现场景,很难100%确定(这就是为什么使用http://plnkr.co/或类似内容包含实时,最小的示例总是一个好主意)但是查看HTML代码我认为问题在于应用过滤器的顺序。
如果您首先应用limitTo
过滤器,它将仅从未排序的数组中删除前8个结果,然后将对截止集进行排序。请尝试恢复orderBy
和limitTo
过滤器的顺序,如下所示:
<input type="text" ng-model="fromStation" typeahead="item as item.name for item in stations.station | filter:$viewValue | orderBy:distance | limitTo:8">
看看这是否有效,如果没有 - 使用plunker发布最小重现场景。