Ben*_*Ben 5 angularjs angular-ui angular-ui-bootstrap angular-ui-typeahead
这个问题与我问的另一个问题有关。
我已经设法让 AngularUI Typeahead 正常工作。但是,我的 orderBy 过滤器似乎没有执行任何操作。
此选择框正确排序所有内容(距离是自定义函数):
<select ng-model="fromStation"
ng-options="item.name for item in stations.station | orderBy:distance">
Run Code Online (Sandbox Code Playgroud)
但是这个提前输入:
<input type="text" ng-model="fromStation"
typeahead="item as item.name for item in stations.station
| filter:$viewValue | limitTo:8 | orderBy:distance">
Run Code Online (Sandbox Code Playgroud)
根本不改变顺序(即它仍然按字母顺序排序)。我想要实现的是,当用户输入火车站的第一个字母(在本例中)时,距离他最近且包含该字母的车站将首先出现。是否可以实现此功能,或者此功能尚不可用?
如果没有看到最小的重现场景,很难 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">
Run Code Online (Sandbox Code Playgroud)
看看这是否有效,如果没有 - 使用 plunker 发布一个最小的重现场景。
| 归档时间: |
|
| 查看次数: |
4129 次 |
| 最近记录: |