2016-01-25 4 views
2

JS:AngularJS orderyby на две цифры

(function(angular) { 
    'use strict'; 
angular.module('orderByExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.friends = 
     [{name:'John', phone:'2-3-7', age:10}, 
     {name:'Mary', phone:'2-3-9', age:19}, 
     {name:'Mike', phone:'10-21-30', age:21}, 
     {name:'Adam', phone:'1-5-9', age:35}, 
     {name:'Julie', phone:'9-15-20', age:29}]; 
    $scope.predicate = 'phone'; 
    $scope.reverse = true; 
    $scope.order = function(predicate) { 
     $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; 
     $scope.predicate = predicate; 
    }; 
    }]); 
})(window.angular); 

HTML:

<table class="friend"> 
    <tr>   
    <th> 
     <button ng-click="order('phone')">Phone Number</button> 
     <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span> 
    </th>   
    </tr> 
    <tr ng-repeat="friend in friends | orderBy:predicate"> 
     <td>{{friend.name}}</td> 
     <td>{{friend.phone}}</td> 
     <td>{{friend.age}}</td> 
    </tr> 
    </table> 

Результат:

Номер

  • 2-3-7
  • 2-3-9
  • 10-21-30
  • 9-15-20
  • 1-5-9

Но я хочу этот результат:

Номер

  • 1-5-9
  • 2-3-7
  • 2-3-9
  • 9-15-20
  • 10-21-30

Я хочу, чтобы отсортировать на основе Количество только

Вот ссылка plunker: http://plnkr.co/edit/QPNVtKQCqk2nYYkFx4aX?p=preview

+0

Вы хотите отсортировать на основе 'возраста' и " Телефон'? –

+0

Я хочу сортировать только на основе телефона – maverickosama92

+1

Это не цифры .... они строки. Если вы хотите отсортировать по номеру, вам нужно сгенерировать число для сортировки по – charlietfl

ответ

2

Вы можете отсортировать по числовому изображению телефона. Например, как это:

$scope.friends = [...].map(function(friend) { 
    friend.phoneNumber = Number(friend.phone.replace(/[^\d]/g, '')); 
    return friend; 
}); 

А затем в шаблоне использовать phoneNumber для заказа:

<th> 
    <button ng-click="order('phoneNumber')">Phone Number</button> 
    <span class="sortorder" ng-show="predicate === 'phoneNumber'" ng-class="{reverse:reverse}"></span> 
</th> 

Демо:http://plnkr.co/edit/CgYc5wRBmJLMWDfG74gI?p=info

+0

спасибо, что вы спасли мой день. – maverickosama92

 Смежные вопросы

  • Нет связанных вопросов^_^