Задать вопрос

Сортировка AngularJs по вложеным объектам?

Всем доброго времен суток.
Допустм есть такой массив данных:

$scope.items = [  
{ name :  'Name1',  phone : { type : 'mob', number : '1234' } },  
{ name :  'Name2',  phone:  { type : 'mob', number : '545234' } } ];


Ну на вьюшке я вывожу их так

<table class="table table-hover table-bordered">
    <thead>
        <tr>
            <th><a href="" ng-click="reverse=!reverse;order('name', reverse)">Name</a></th>
            <th><a href="" ng-click="reverse=!reverse;order('????', reverse)">Phone</a></th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="item in items" class="gradeX">
            <td>
               {{ item.name }}  
            </td>
            <td>
              {{ item.phone.type }} : {{ item.phone.number }}

            </td>
        </tr>
       </tbody>
</table>


Собственно сама сортировка производится при нажати на заголовок
<a href="" ng-click="reverse=!reverse;order('name', reverse)">Name</a>

и в контроллере такой код
var orderBy = $filter('orderBy');

      $scope.order = function(predicate, reverse) {
          $scope.items = orderBy($scope.items, predicate, reverse);
      };


Так вот когда я просто сортирую по имени
reverse=!reverse;order('name', reverse)

Все работает. А вот как отсотровать по телефонам (по номеру)..???
пробывал так
reverse=!reverse;order('phone.number', reverse)

Но оно не сортирует нормально...((
  • Вопрос задан
  • 3870 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Serhioromano
@Serhioromano
Web Developer
Попробуй так. В HTML:

<tr ng-repeat="item in items | orderBy:predicate:reverse" class="gradeX">


А в заголовке

<a href="" ng-click="reverse = !reverse; predicate = 'phone.type'">Tel</a>


Проверил на фидле. Вроде работает.

jsfiddle.net/Serhioromano/hrg0k5es/2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@apasen
Возможно, не уверен, нужно использовать функцию для сортировки.
$scope.items = orderBy($scope.items, predicate, reverse);

В место predicate
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы