2017-02-02 4 views
0

У меня есть следующий JSON (см. Ниже). Я помещаю данные в таблицу html и работает нормально. Я могу сортировать по полю имени, но как я могу сортировать в поле punten в таблице точек в angularjs?Как отсортировать таблицу json с дополнительным массивом

Я пробовал orderBy values.points.punten, но это не работает.

// create the list 
$scope.values = [  
     { 
      name: 'Johan', 
      points: [ 
       { 
        punten: '4567', 
        pit: '1', 
        field: 'p0' 
       }, 
       { 
        punten: '5422', 
        pit: '0', 
        field: 'p1' 
       },    { 
        punten: '5422', 
        pit: '0', 
        field: 'p2' 
       } 
      ] 
     }, 
     { 
      name: 'Ton', 
      points: [ 
       { 
        punten: '4444', 
        pit: '2', 
        field: 'p0' 
       }, 
       { 
        punten: '5100', 
        pit: '1', 
        field: 'p1' 
       }, 
       { 
        punten: '5423', 
        pit: '0', 
        field: 'p2' 
       } 
      ] 
     }, 
     { 
      name: 'Dian', 
      points: [ 
       { 
        punten: '4765', 
        pit: '0', 
        field: 'p0' 
       }, 
       { 
        punten: '4952', 
        pit: '0', 
        field: 'p1' 
       }, 
       { 
        punten: '5424', 
        pit: '0', 
        field: 'p2' 
       } 
      ] 
     }, 
     { 
      name: 'Kees', 
      points: [ 
       { 
        punten: '3765', 
        pit: '0', 
        field: 'p0' 
       }, 
       { 
        punten: '3952', 
        pit: '0', 
        field: 'p1' 
       }, 
       { 
        punten: '3424', 
        pit: '0', 
        field: 'p2' 
       } 
      ] 
     } 

    ]; 
+0

Вы хотите отсортировать по полю? Или фильтровать по полю? – fjc

+0

Я хочу отсортировать по форме сверху до минимума и наоборот – baliman

ответ

0

Вот код orderBypunten

Поскольку у вас есть punten в массиве точек,

<li ng-repeat="x in values | orderBy:'points[0].punten'">{{x}}</li>

var app = angular.module('myApp', []); 
 
app.controller('orderCtrl', function($scope) { 
 
    $scope.values = [  
 
     { 
 
      name: "Johan", 
 
      points: [ 
 
       { 
 
        punten: "4567", 
 
        pit: "1", 
 
        field: "p0" 
 
       }, 
 
       { 
 
        punten: "5422", 
 
        pit: "0", 
 
        field: "p1" 
 
       },    { 
 
        punten: "5422", 
 
        pit: "0", 
 
        field: "p2" 
 
       } 
 
      ] 
 
     }, 
 
     { 
 
      name: "Ton", 
 
      points: [ 
 
       { 
 
        punten: "4444", 
 
        pit: "2", 
 
        field: "p0" 
 
       }, 
 
       { 
 
        punten: "5100", 
 
        pit: "1", 
 
        field: "p1" 
 
       }, 
 
       { 
 
        punten: "5423", 
 
        pit: "0", 
 
        field: "p2" 
 
       } 
 
      ] 
 
     }, 
 
     { 
 
      name: "Dian", 
 
      points: [ 
 
       { 
 
        punten: "4765", 
 
        pit: "0", 
 
        field: "p0" 
 
       }, 
 
       { 
 
        punten: "4952", 
 
        pit: "0", 
 
        field: "p1" 
 
       }, 
 
       { 
 
        punten: "5424", 
 
        pit: "0", 
 
        field: "p2" 
 
       } 
 
      ] 
 
     }, 
 
     { 
 
      name: "Kees", 
 
      points: [ 
 
       { 
 
        punten: "3765", 
 
        pit: "0", 
 
        field: "p0" 
 
       }, 
 
       { 
 
        punten: "3952", 
 
        pit: "0", 
 
        field: "p1" 
 
       }, 
 
       { 
 
        punten: "3424", 
 
        pit: "0", 
 
        field: "p2" 
 
       } 
 
      ] 
 
     } 
 

 
    ]; 
 
});
<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="orderCtrl"> 
 

 
<ul> 
 
<li ng-repeat="x in values | orderBy:'points[0].punten'">{{x}}</li><br> 
 
</ul><br> 
 

 
</div> 
 

 

 

 
<p>The array items are displayed alphabetically.</p> 
 

 
</body> 
 
</html>

запустите ВЫШЕ SNIPPET

HERE IS A WORKING DEMO

+0

@baliman. вы проверили ответ? – Sravan

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