AngularJS列表,自定义过滤器未正确排序(AngularJS list with custom filter not sorting correctly)

编程入门 行业动态 更新时间:2024-10-15 08:20:07
AngularJS列表,自定义过滤器未正确排序(AngularJS list with custom filter not sorting correctly)

我试图弄清楚为什么我的angularjS“最新即将发生的事件”列表没有正确显示最新的即将发生的事件。 订单似乎不合适。

不合适的日期列表: 现场演示

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提要如下所示:

[ { "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" } ]

任何提示,所以我可以尝试解决这个问题? 谢谢!

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

Here is my view:

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

And here is my controller with a custom filter to show the latest upcoming events based on current date:

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'];

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!

最满意答案

如果您打算按降序按开始日期过滤项目,可以使用orderBy:

<ul ng-repeat="event in events | upcomingEvents |orderBy:'-start'| limitTo: 4"> <li>{{ event.title }}</li> <li>{{ event.start }}</li> </ul>

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>

更多推荐

本文发布于:2023-07-30 18:47:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1338885.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   过滤器   正确   列表   AngularJS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!