2017-06-01 54 views
0

我有一个自动完成搜索框。AngularJS:custom orderBy

<div ng-repeat="item in items| filter:search">

我想使它通过排序基于项目的名称的结果稍好。

item1 {name:'applePy'} 
item2 {name:'pineApple'} 
item3 {name:'application'} 
item4 {name:'anApple'} 
item5 {name:'apple'} 

随着当我写在搜索框中appl目前执行的结果将显示如下:

anApple 
apple 
applePy 
application 
pineApple 

但我想结果根据插入appl等下令:

apple 
applePy 
application 
anApple 
pineApple 

两个排序之间的区别在于,在本例中结果是根据搜索字符串排序的appl和其他的按字母顺序排列的结果。

我该怎么做?

+0

我不明白这两个命令之间的区别。 – Ericson578

+0

您可以使用lodash并对结果进行分类。 – Maccurt

+0

@ Ericson578,请参阅已编辑的部分。 – mnish

回答

1

您是否在寻找搜索以显示在ASC顺序中以搜索字符开始的项目结果?

$scope.startsWith = function (source, target) { 
    return source.toLowerCase().indexOf(target.toLowerCase()) === 0; 
} 

然后改变你的DIV为:

<div ng-repeat="item in items| filter:search:startsWith"> 

如果你的目的是要列出“startsWith”的所有搜索结果,并附加了如果是这样,你可以通过添加一个新的方法做到这一点在ASC订单的底部休息。你必须编写一个自定义过滤器。 See docs.