web-dev-qa-db-fra.com

AngularJS ng-repeat orderPar date ne fonctionne pas

J'ai un ng-repeat fonctionnel, que je voudrais commander par date décroissante (articles les plus récents en premier).

Cependant, je n'arrive pas à le faire fonctionner. J'ai vérifié les devis, etc. J'ai essayé orderBy:'createdate':reverse, orderBy:'article.createdate':reverse, et orderBy:'data.blog.article.createdate':reverse Aucun ne semble fonctionner.

Voici mon point de vue:

<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>

Voici un échantillon des données (converties en JSON à partir de XML à l'aide de 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"
            }
        ]
    }
}
28
eat-sleep-code

L'argument reverse doit être une valeur booléenne.

En supposant que l'inverse ne soit pas défini sur vrai ou faux quelque part dans votre contrôleur, vous devez remplacer

orderBy:'createdate':reverse

avec

orderBy:'createdate':true

Démo

orderBy docs

63
Marc Kline