我使用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
答案 0 :(得分:1)
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;
答案 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;