2015-06-05 7 views
0

Существует массив объектов, и каждый объект также содержит другой вложенный массив в angularJS. Обычно есть 2-й массив, и я хочу отобразить значение массива, которое будет упорядочено вложенным массивом с именем «задачи».Сортировать по: 2d массиву в angularjs

Вот мой код. Спасибо это заранее ...

var app = angular.module('app',[]).controller('ctrl1', function($scope){ 
    $scope.record = [ 
     {uniqueID : 'pp-12', Name : 'Jim', status : 'Approved', tasks : ['xx', 'er'] }, 
     {uniqueID : 'pp-11', Name : 'Jim', status : 'Canceled', tasks : ['aa', 'vy','sd'] }, 
     {uniqueID : 'pp-45', Name : 'Nick', status : 'Pending', tasks : ['av'] }, 
     {uniqueID : 'pp-32', Name : 'Thomas', status : 'Canceled', tasks : ['zc', 'ym','at', 'lt'] }, 
     {uniqueID : 'pp-01', Name : 'Thomas', status : 'Pending', tasks : ['xy', 'fr'] }, 
     {uniqueID : 'pp-09', Name : 'Nick', status : 'Approved', tasks : ['aa', 'sd','cf'] }, 
     {uniqueID : 'pp-23', Name : 'Lina', status : 'Requested', tasks : ['av', 'bs','ay','tr'] }, 
     {uniqueID : 'pp-39', Name : 'Jim', status : 'Pending', tasks : ['zc'] } 
    ]; 
}); 



<table border="1"> 
    <thead> 
    <tr> 
     <td>Unique ID</td> 
     <td>Name</td> 
     <td>Status</td> 
     <td>tasks</td> 
    </tr> 
    </thead> 

    <tbody ng-repeat="data in record"> 
    <tr ng-repeat="plan in data.tasks track by $index | orderBy : tasks" > 
     <td> {{data.uniqueID}}</td> 
     <td> {{data.Name}}</td> 
     <td> {{data.status}}</td> 
     <td> {{plan}}</td> 
    </tr> 
    </tbody> 
</table> 
+0

Что вы имеете в виду под 'по заказу' ? –

+0

Вы хотите отсортировать результаты по значениям задач? –

ответ

1

Можно использовать только петлю, создавая новый отсортированный массив, попробуйте:

.filter("recordFilter", function(){ 
    return function(records){ 
    var arr = []; 
    angular.forEach(records, function(record){ 
     angular.forEach(record.tasks, function(plan){ 
     arr.push(angular.extend({}, record, {plan:plan})) 
     }) 
    }); 
    return arr.sort(function(a,b){ 
     return a.plan > b.plan ? 1 : -1 
    }) 
    } 
}) 
<tbody> 
<tr ng-repeat="data in record | recordFilter track by $index"> 
    <td> {{data.uniqueID}}</td> 
    <td> {{data.Name}}</td> 
    <td> {{data.status}}</td> 
    <td> {{data.plan}}</td> 
</tr> 
</tbody> 

Demo

+0

Спасибо @wZVanG это работает для моего дела. – Mohsin

0

Уплотненных нг-повтор?

<table border="1"> 
    <thead> 
     <tr> 
      <td>Unique ID</td> 
      <td>Name</td> 
      <td>Status</td> 
      <td>tasks</td> 
     </tr> 
    </thead> 

    <tbody ng-repeat="data in record"> 
     <tr> 
      <td> {{data.uniqueID}}</td> 
      <td> {{data.Name}}</td> 
      <td> {{data.status}}</td> 
      <td> <span ng-repeat="plan in data.tasks"> {{plan}}</span></td> 
     </tr> 
    </tbody> 
</table> 
Смежные вопросы