2017-06-01 26 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.