2017-06-01 3 views
0

Ich habe eine Autocomplete-Suchfeld.AngularJS: benutzerdefinierte Bestellungvon

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

Ich mag es etwas besser machen, indem die Ergebnisse auf dem Namen der Elemente basierend sortieren.

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

Mit der aktuellen Implementierung, wenn ich appl in dem Suchfeld schreibe das Ergebnis wird wie folgt dargestellt werden:

anApple 
apple 
applePy 
application 
pineApple 

Aber ich das Ergebnis möchte nach geordnet werden, um die eingelegten appl wie:

apple 
applePy 
application 
anApple 
pineApple 

der Unterschied zwischen den beiden-Bestellung ist in diesem Beispiel, dass das Ergebnis nach der String-Suche bestellt wird appl und der Rest des Ergebnisses alphabetisch.

Wie kann ich das tun?

+0

Ich verstehe nicht den Unterschied zwischen den beiden Ordnungen. – Ericson578

+0

können Sie lodash verwenden und Ihr Ergebnis sortieren .. – Maccurt

+0

@ Ericson578, siehe den bearbeiteten Teil. – mnish

Antwort

1

Suchen Sie nach der Suche nach den Ergebnissen der Artikel beginnen mit Suchzeichen in ASC-Reihenfolge? Wenn ja, können Sie dies tun, indem eine neue Methode hinzu:

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

dann Ihre DIV ändern:

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

Wenn Ihre Absicht alle Suchergebnisse von „starts“ zur Liste ist und fügen Sie die ruhen Sie in ASC-Reihenfolge unten aus. Sie müssen einen benutzerdefinierten Filter schreiben. See docs.

Verwandte Themen