AngularJS - 将月份的对象键格式设置为按时间顺序显示每个月

时间:2015-09-03 04:57:18

标签: javascript angularjs

我正在尝试将对象密钥格式化为月份,并按月按时间顺序显示。不太确定我做错了什么。 以下是视图中的代码:

<div ng-repeat="month in months | orderBy: 'english' | date: 'MMMM' ">
     <h1><strong>{{ month.english }}</strong></h1>
     <p><strong>French Word: </strong>{{ month.french }}</p>
     <p><strong>Number of Days: </strong>{{ month.days }}</p>
     <hr />
</div>

以下是该对象的示例:

angular
    .module('myApp', [])
    .controller('myCtrl', function($scope) {
        var months = [
            {
                english: 'August',
                french: 'Aout',
                days: 31,
                ordinal: 8,
                season: 'summer'
            },
            {
                english: 'March',
                french: 'Mars',
                days: 31,
                ordinal: 3,
                season: 'spring'
            },
            {
                english: 'February',
                french: 'Fevrier',
                days: 28,
                ordinal: 2,
                season: 'winter'
            }
        ];
        $scope.months = months;
    });

截至目前,它按字母顺序排序,而不是月份。我哪里出错了?

2 个答案:

答案 0 :(得分:2)

您对日期过滤器的使用不正确。日期过滤器接受的唯一输入是Date对象,时间戳或ISO 8601日期时间字符串。

请参阅Angular docs

按时间顺序排序,为什么不按顺序排序,因为你已经有了这些数据?

<div ng-repeat="month in months | orderBy: 'ordinal'">

答案 1 :(得分:1)

我认为您希望按月号排序,而不是按名称排序。使用orderBy: 'ordinal'代替orderBy: 'english'