AngularJS列表与自定义过滤器不能正确排序 [英] AngularJS list with custom filter not sorting correctly
本文介绍了AngularJS列表与自定义过滤器不能正确排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图找出为什么我的angularjS最新的即将发生的事件列表显示不正确最新的即将发生的事件。顺序显得格格不入。
I am trying to figure out why my angularjS "latest upcoming events" list is not correctly showing the latest upcoming events. The order seems out of place.
出的地方约会列表: 住在这里演示
Out of place dated list: Live demo here
Upcoming events:
Repeating Event
2015-07-16
Meeting
2015-07-26
Happy Hour
2015-07-19
Meeting at Google
2015-07-15
这是我的看法:
<body ng-app="listApp">
<div class="container" ng-controller="EventController">
<h3>Upcoming events:</h3>
<ul ng-repeat="event in events | upcomingEvents | limitTo: 4">
<li>{{ event.title }}</li>
<li>{{ event.start }}</li>
</ul>
,这里是我的自定义过滤器控制器,基于当前的日期显示最新的即将发生的事件:
var app = angular.module('listApp', []);
app.controller('EventController', function($scope, $http){
$http.get('http://www.ogmda.com/sandbox/fullcalendar/demos/json/events.json').success(function(data) {
$scope.events = data;
})
});
app.filter('upcomingEvents', function () {
return function (input) {
var upcomingEvents = [];
if(!input){
return upcomingEvents;
}
upcomingEvents = input.filter(function (data) {
var currentDate = new Date();
console.log(new Date(data.start));
if ((new Date(data.start) - currentDate) >= 0) {
return true;
} else {
return false;
}
});
upcomingEvents.sort(function (a, b) {
return a.start - b.start;
});
return upcomingEvents;
};
});
app.$inject = ['$scope'];
JSON供稿看起来像这样:
The JSON feed looks like so:
[
{
"title": "All Day Event",
"start": "2015-07-11"
},
{
"title": "Long Event",
"start": "2015-07-07",
"end": "2015-07-10"
},
{
"id": "999",
"title": "Repeating Event",
"start": "2015-07-09"
},
{
"id": "999",
"title": "Repeating Event",
"start": "2015-07-16"
},
{
"title": "Meeting",
"start": "2015-07-12"
},
{
"title": "Conference",
"start": "2015-07-11",
"end": "2015-07-13"
},
{
"title": "Meeting",
"start": "2015-07-26",
"end": "2015-07-30"
},
{
"title": "Lunch",
"start": "2015-07-12"
},
{
"title": "Happy Hour",
"start": "2015-07-19"
},
{
"title": "Dinner",
"start": "2015-07-12"
},
{
"title": "Birthday Party",
"start": "2015-07-04"
},
{
"title": "Meeting at Google",
"url": "http://google.com/",
"start": "2015-07-15"
}
]
任何提示,所以我可以尝试解决这个?谢谢!
Any tips so I can try to troubleshoot this? Thanks!
推荐答案
如果你的目的是过滤降序排列的开始日期的物品,你可以使用排序依据:
If your intention is to filter the items by the start dates in descending order, you can use orderBy:
<ul ng-repeat="event in events | upcomingEvents |orderBy:'-start'| limitTo: 4">
<li>{{ event.title }}</li>
<li>{{ event.start }}</li>
</ul>
这篇关于AngularJS列表与自定义过滤器不能正确排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文