4

这个问题与我问的另一个问题有关。

我已经设法让 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">

根本不改变顺序(即它仍然按字母顺序排序)。我想要实现的是,当用户键入火车站的第一个字母(在这种情况下)时,最靠近他的包含该字母的车站将首先出现。是否有可能完成这项工作,或者这个功能不可用(还)?

4

1 回答 1

3

如果没有看到最小的重现场景,很难 100% 确定(这就是为什么包含使用http://plnkr.co/或类似内容的实时、最小示例总是一个好主意)但我认为查看您的 HTML 代码问题在于应用过滤器的顺序

如果您limitTo首先应用过滤器,它只会从未排序的数组中截断前 8 个结果,然后才会对截断集进行排序。尝试恢复orderBylimitTo过滤器的顺序,如下所示:

<input type="text" ng-model="fromStation" typeahead="item as item.name for item in stations.station | filter:$viewValue | orderBy:distance | limitTo:8">

看看这是否有用,如果没有 - 使用 plunker 发布一个最小的重现场景。

于 2014-03-01T10:47:53.843 回答