我正在尝试将对象密钥格式化为月份,并按月按时间顺序显示。不太确定我做错了什么。 以下是视图中的代码:
<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;
});
截至目前,它按字母顺序排序,而不是月份。我哪里出错了?
答案 0 :(得分:2)
您对日期过滤器的使用不正确。日期过滤器接受的唯一输入是Date对象,时间戳或ISO 8601日期时间字符串。
请参阅Angular docs。
按时间顺序排序,为什么不按顺序排序,因为你已经有了这些数据?
<div ng-repeat="month in months | orderBy: 'ordinal'">
答案 1 :(得分:1)
我认为您希望按月号排序,而不是按名称排序。使用orderBy: 'ordinal'
代替orderBy: 'english'