从JSON对象中的最后一项提取日期(AngularJS)

时间:2014-09-25 14:57:27

标签: javascript json angularjs

我使用AngularJS在Web应用程序上动态创建对象。这个想法是用户可以在点击按钮时加载新事件,为此我需要获取最后一个的日期,以便我知道接下来要加载哪些事件。

这是生成JSON对象的代码

    services.getEvents().then(function(data){
        $scope.events = data.data;
    });

和我的HTML ...

    <li ng-repeat="event in events | orderBy:'-event_date' ">
      <span>{{event.event_date}},{{event.event_name}}, {{event.event_venue}}, {{event.event_description}} </span>
    </li>

一个事件的例子......

{
 "event_id":"1",
 "event_name":"Event 1",
 "event_date":"2014-09-26 00:00:00",
 "event_venue":"Limerick",
 "event_description":"stuff"
}

是否可以从这些列表中提取最新日期,以便将其发送回API?或者我完全以错误的方式解决这个问题。

我也利用这个机会学习AngularJS

3 个答案:

答案 0 :(得分:1)

&#13;
&#13;
var app = angular.module("app", []);


function MainCtrl ($filter) {
this.data = [
  
  {
 "event_id":"1",
 "event_name":"Event 1",
 "event_date":"2014-05-26 00:00:00",
 "event_venue":"Limerick",
 "event_description":"stuff"
},{
 "event_id":"2",
 "event_name":"Event 1",
 "event_date":"2015-09-26 00:00:00",
 "event_venue":"Limerick",
 "event_description":"stuff"
},{
 "event_id":"3",
 "event_name":"Event 1",
 "event_date":"2014-9-27 00:00:00",
 "event_venue":"Limerick",
 "event_description":"stuff"
}
  
];
 this.lastOne =$filter('orderBy')(this.data,'-event_date')[this.data.length-1].event_date ;
 }





angular.module("app").controller("MainCtrl", MainCtrl);
&#13;
<html ng-app="app">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-controller="MainCtrl as vm">
  <div class="container">
     <h3>Latest One:{{vm.lastOne}}</h3>
    
  </div>
 
</body>
  </html>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

要访问数组的最后一个元素,请使用长度-1

events[events.length - 1].event_date

如果来自服务器的响应没有以任何方式排序,则应首先过滤

var sortedArray = $filter('orderBy')($scope.events, '-event_date');
var lastDate = sortedArray[sortedArray.length - 1].event_date

希望这能让你顺利上路。

答案 2 :(得分:0)

如果使服务器端代码返回按降序日期排序的数组,则可以将数据从数组中的第一项中取出。类似的东西:

events[0].event_date;

如果做不到这一点,你可以在客户端进行排序,例如:

events.sort(function(a, b){return new Date(a.event_date) < new Date(b.event_date);});

然后得到值:

events[0].event_date;