AngularJS列表与自定义过滤器不能正确排序 [英] AngularJS list with custom filter not sorting correctly

查看:159
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆