2014-06-04 6 views
28

Ich habe eine funktionierende ng-Wiederholung, die ich nach absteigendem Datum bestellen möchte (neueste Artikel zuerst).AngularJS ng-NachbestellungDatum funktioniert nicht

Allerdings kann ich nicht scheinen, es zur Arbeit zu bringen. Ich habe das Angebot doppelt geprüft usw. Ich habe versucht, orderBy:'createdate':reverse, orderBy:'article.createdate':reverse und orderBy:'data.blog.article.createdate':reverse keine scheint zu funktionieren.

Das ist meine Ansicht:

<article data-ng-if="article.id == post || post===NULL" data-ng-repeat="article in data.blog.article | orderBy:'createdate':reverse | slice:currentPage*pageSize:currentPage+1*pageSize"> 
    <h2 class="blog-post-title"> 
     <a href="#!/blog/{{article.id}}" title="Permalink to {{article.title.__cdata}}">{{article.title.__cdata}}</a> 
    </h2> 
    <span class="blog-post-meta">Posted on {{article.createdate | date:'MMMM dd, yyyy h:mma'}} by {{article.author}}</span> 
    <div class="blog-post-content" ng-bind-html="article.content.__cdata">{{article.content.__cdata}}</div> 
</article> 

Hier ist ein Beispiel der Daten (umgerechnet auf JSON von XML X2JS):

{ 
    "blog": { 
     "article": [ 
      { 
       "id": "1", 
       "author": "eat-sleep-code", 
       "title": { 
        "__cdata": "The first article." 
       }, 
       "content": { 
        "__cdata": "\n  This is my first article in my test site.\n  " 
       }, 
       "createdate": "2014-05-09" 
      }, 
      { 
       "id": "2", 
       "author": "eat-sleep-code", 
       "title": { 
        "__cdata": "The second article." 
       }, 
       "content": { 
        "__cdata": "\n  This is my second article in my test site. This article's create date is actually earlier.\n  " 
       }, 
       "createdate": "2014-05-08" 
      } 
     ] 
    } 
} 
+1

Wenn Sie ersetzen Sag nicht, was passiert? Gibt es irgendwelche Konsolenfehler? Sind sie nicht in der richtigen Reihenfolge? –

+0

Keine Konsolenfehler überhaupt. Nur nicht in der richtigen Reihenfolge. Oh, habe auch versucht das Entfernen: umgekehrt von der Bestellung, nur um sicherzustellen, dass das nicht das Problem war. Keine Änderung. –

+0

Siehe auch diese Diskussion http://StackOverflow.com/Questions/19876116/angular-OrderBy-Date/25658846#25658846 – MDT

Antwort

62

Das reverse Argument ein boolescher Wert sein sollte.

Vorausgesetzt, dass Sie nicht umgekehrt wahr oder falsch irgendwo in Ihrem Controller eingestellt haben, sollten Sie

orderBy:'createdate':reverse 

mit

orderBy:'createdate':true 

Demo

orderBy docs

+0

Danke, meine Tage gespeichert –

+4

Die AngularJS Dokumente in diesem Fall sind schön verschleiert. Kein Beispiel für eine einfache statische Umkehrung, wie hier gefragt wird. Und in dem Beispiel, das sie zur Verfügung stellen, wird die Demo-Variable genauso benannt wie das Schlüsselwort ("reverse"), so dass die Leute die beiden verwechseln. Ausgezeichnet! – ryascl

+1

können Sie jetzt auch orderBy: '- createdate' verwenden. –