2017-11-27 1 views
0

ich Namen wie:ng-repeat orderBy mit zweistelliger Zahl

Name - Page 9 
Name - Page 2 
Name - Page 6 
Name - Page 15 
Name - Page 1 
Name - Page 12 
Name - Page 14 
Name - Page 13 
Name - Page 10 
Name - Page 11 

Derzeit ich tue:

<div ng-repeat="data in results | orderBy:'-name'"> 
{{ data.name }} 
</div> 

Aber es macht es nicht mit den Zahlen berücksichtigt bestellen.

Weiß jemand, wie ich sicherstellen kann, dass es nach den Nummern geordnet ist?

Antwort

0

Es sollte wie erwartet funktionieren. Überprüfe diesen Plünderer, den ich erstellt habe. Plunker Code

Edit: Um ein zweistelliges handhaben Sie eine benutzerdefinierte Sortierfunktion wie folgt schreiben kann:

$scope.myValueFunction = function(value) { 
    var numpart = value.name.replace(/^\D+/g, ''); 
    return -(numpart-1000); 
} 

Was das bedeutet ist die Anzahl Teil zu extrahieren und eine sortierbare Nummer. Sie können das vorangehende -ve-Zeichen entfernen, um eine aufsteigende Reihenfolge zu erhalten.

Dann in Ihrem HTML, können Sie diese Funktion wie folgt aufrufen:

<tr ng-repeat="friend in friends | orderBy:myValueFunction"> 
    <td>{{friend.name}}</td> 
    <td>{{friend.phone}}</td> 
    <td>{{friend.age}}</td> 
</tr> 
+0

leider meine Frage festgelegt, was mit zweistelligen Bereich? – bryan

1
<!DOCTYPE html> 
<html> 
<head> 
<script src="angular.js"></script> 
</head> 
<body data-ng-app="app"> 
     <div data-ng-controller="testC"> 
     <div ng-repeat="data in results | orderBy:['name']">-{{data.name}}</div> 
     </div> 
</body> 
</html> 
<script type="text/javascript"> 
     var app = angular.module('app', []); 
     app.controller('testC', ['$scope', function($scope) { 
     $scope.results = [{'name':'Page 21'}, 
     {'name':'Page 12'}, 
     {'name':'Page 10'}, 
     {'name':'Page 01'}, 
     {'name':'Page 30'}, 
     {'name':'Page 15'}, 
     {'name':'Page 05'}]; 
     }]); 
</script> 

es für mich funktioniert, bitte einmal versuchen. https://jsfiddle.net/shivtumca12/nqbLLr4x/ und auch

https://jsfiddle.net/shivtumca12/LxLu8v70/

+0

Das liegt daran, dass Sie eine "0" vor einstelligen Zahlen setzen - dh. '01' und nicht' 1' – bryan

+0

@bryan aber zweite funktioniert gut, einmal beide, bitte lassen Sie mich wissen, wo ich falsch liege. –

+0

Ihr zweiter jsfiddle-Code bietet keine Lösung für die Frage, da Sie Text ignoriert haben und nur Zahlen haben. Die Frage fragt nach einer Möglichkeit, Elemente in der Reihenfolge zu sortieren, in der am Ende ein Text mit einer Nummer vorhanden ist. –