Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 带有自定义筛选器的AngularJS列表排序不正确_Json_Angularjs - Fatal编程技术网

Json 带有自定义筛选器的AngularJS列表排序不正确

Json 带有自定义筛选器的AngularJS列表排序不正确,json,angularjs,Json,Angularjs,我试图找出为什么我的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" n

我试图找出为什么我的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"
       }
       ]

有什么建议可以帮我解决这个问题吗?谢谢

如果要按开始日期降序筛选项目,可以使用orderBy:

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

需要根据当前日期执行此操作。因此,如果今天是7月13日,那么最新显示的事件应该是7月14日、15日等等。我误解了你的信息。效果很好。谢谢