0

i would like to use orderBy and limitTo in array which is contain in other array so i need to use ng-repeat two times: i tried this but not working

       <ul ng-repeat="item in customarray | orderBy: 'first.date' | limitTo :10 track by $index">
            <div ng-repeat="first in item[1]">
                {{first.date | date}}
            </div>
       </ul>

here are my arrays

[
   {
      "date":"2015-09-29T07:12:14Z",
      "titre":"Changement date de clôture dossier Barbe Alain",
      "status":"closed",
      "tag":"maintenance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2015-09-04T09:45:20Z",
      "titre":"43325- NH DISTRIBUTION",
      "status":"closed",
      "tag":"assistance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2015-08-20T06:18:04Z",
      "titre":"TR: EURL NH DISTRIBUTION vous a envoyé un message depuis sa plateforme",
      "status":"closed",
      "tag":"assistance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2015-02-25T16:00:46Z",
      "titre":"Votre demande au support sans suite",
      "status":"closed",
      "tag":"assistance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2015-01-12T06:48:35Z",
      "titre":"Bonjour,\n\nle cabinet AUFICOM aura un stand lors du...",
      "status":"closed",
      "tag":"assistance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2014-12-18T09:48:38Z",
      "titre":"ISACOMPTA",
      "status":"closed",
      "tag":"maintenance",
      "id":660302971,
      "name":"Eugenie Martin"
   },
   {
      "date":"2014-12-15T14:08:08Z",
      "titre":"changement date de clôture",
      "status":"closed",
      "tag":"maintenance",
      "id":660302971,
      "name":"Eugenie Martin"
   }
]

[
   {
      "date":"2016-03-15T10:56:28Z",
      "titre":"ferme de la blonde",
      "status":"closed",
      "tag":"assistance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2016-03-08T13:51:57Z",
      "titre":"SCAN DOCUMENTS",
      "status":"open",
      "tag":"evolution",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2016-01-05T13:59:31Z",
      "titre":"EARL DU TROU DE L'ENFER",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-12-28T06:50:04Z",
      "titre":"15377- TR: SNC DE LA FERME DE LA BLONDE vous a envoyé un message depuis sa plateforme",
      "status":"closed",
      "tag":"assistance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-11-06T09:40:03Z",
      "titre":"GAEC DE LA VILLE (N°573)",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-11-02T16:28:05Z",
      "titre":"43325- NH DISTRIBUTION",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-06-26T11:41:57Z",
      "titre":"Dossier 411 : MUNIER Valérie",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-06-26T11:40:54Z",
      "titre":"Dossier 6072 : ROBERT Grégory",
      "status":"closed",
      "tag":"assistance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2015-01-15T08:58:07Z",
      "titre":"Demande De TJ",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   },
   {
      "date":"2014-12-17T10:26:37Z",
      "titre":"ECOLE DES CAVALIERS",
      "status":"closed",
      "tag":"maintenance",
      "id":661671741,
      "name":"Tanguy Jacob"
   }
]

An other solution would be to put all arrays together then i will be able to use only 1 time ng-repeat: but i don't know how can i do that i begin with this:

controller.js

 var interarray = []
                            for(s=0;s<data.length;s++){

                              interarray.push(data[s]);

                            }
                            console.log(interarray);
Yuriy Yakym
  • 3,616
  • 17
  • 30
moskitos
  • 149
  • 1
  • 2
  • 13
  • Or how can i wrap every tab in one array then i just have to use 1 time ng-repeat and limitTo and orderBy will be working fine ? – moskitos May 12 '16 at 12:08
  • You cannot access a variable (`first`) created at child element (in this case inner `div`) at a parent level element (`ul`). – Aditya Singh May 12 '16 at 12:46

2 Answers2

1

Assuming your arrays are data1 and data2 , you can use concat

$scope.allDatas = data1.concat(data2)

And you only need the field name in your orderBy

http://jsfiddle.net/Lvc0u55v/3915/

AshBringer
  • 2,614
  • 2
  • 20
  • 42
  • Note that in the fiddle, `track by $index` was removed, which is correct. Tracking by $index (as in original post) interferes with `orderBy`. Tracking by `item.id` would also be acceptable. (Not using `track by` is considered slow). – david-err Dec 08 '16 at 19:07
-1

I finnaly manage it here what i did in my controller:

            var lastticket = [];

                      for (i=0; i<data.length; i++) {
                          for (j=0; j<data[i][1].length; j++) {

                              $scope.lastarray = lastticket.push(data[i][1][j]);
                          }
                      };
                        $scope.lastarray = lastticket;

and in my view:

 <ul ng-repeat="item in lastarray  | orderBy:'-date'| limitTo :10 track by $index">

                <li  class="row"><div class="col-md-2 date text-center">{{item.date | date}}</div><div class="col-md-3 date text-center"> {{item.name}}</div> <div class="col-md-5 date text-center">{{item.titre}}</div> <div class="col-md-2 date text-center">{{item.status}}</div></li>
        </ul>

What i did is that i loop 2 times in my array to get what i want then i send to my view ! ( but this is not the best solution i should have used angular.forEach)

moskitos
  • 149
  • 1
  • 2
  • 13