获取复杂属性的最大日期

时间:2014-06-21 07:46:46

标签: angularjs

使用Angular $ http,我从数据库中检索了一个模型。它是一个有主题的论坛对象。每个主题都有很多帖子。

我正在显示一个显示的网格|主题描述|帖子数量|最新帖子|

我有前两个工作,但我不知道如何获取最新帖子(最后一栏)的数据。帖子有一个DatePosted属性。我想向最新的帖子展示海报和标题等信息。

这是一个自定义过滤器还是更好的方法。

<div ng-controller="forumCtrl">

<h3>{{forum.ForumDescription}}</h3>
<h4></h4>

<table class="table table-condensed table-bordered table-hover table-striped">
    <thead>
        <tr>
            <th>Topic</th>
            <th>Threads</th>
            <th>Latest Post</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="topic in forum.Topics">
            <td>{{topic.TopicText}}</td>
            <td>{{topic.Posts.length}}</td>
            <td>{{Math.max(topic.Posts.PostDate)}}</td>
        </tr>
    </tbody>
</table>

1 个答案:

答案 0 :(得分:1)

您可以在视图中使用orderBy过滤器,也可以在$scope中使用Posts数组并返回最新的帖子,例如:

<!-- Approach 1 -->
<td>{{(topic.Posts | orderBy:'PostDate':true)[0].PostDate}}</td>

<!-- Approach 2 -->
<td>{{latestPost(topic.Posts).PostDate}}</td>

/* Approach 2 */
$scope.latestPost = function (posts) {
    return posts.reduce(function (latest, current) {
        return (current.PostDate > latest.PostDate) ? current : latest;
    });
};

另请参阅此 short demo


<子> 备注:
1.您也可以定义和使用自己的过滤器 2.上述实施是演示,不考虑角落情况,例如:空Posts