2014-06-21 2 views
0

각도 $ http를 사용하여 데이터베이스에서 모델을 가져 왔습니다. 주제가있는 포럼 객체입니다. 각 주제에는 많은 게시물이 있습니다.복합 속성의 최대 날짜 가져 오기

표시가있는 격자가 표시됩니다. | 항목 설명 | 게시물 수 | 최신 게시물 |

나는 처음 두 가지 작업을하지만 최근 게시물 (마지막 열)에서 데이터를 가져 오는 방법을 잘 모르겠습니다. Post에는 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> 

+0

필터를 사용하지 마십시오. http 응답으로부터 데이터를 얻을 때, 각 주제의 최신 게시물을 찾아서'topic.lastestPost'로 설정하십시오. –

+0

일부 샘플 코드는 좋을 것입니다 ... – nverba

+0

JB. 나는 그것을 시도 할 것이다. – Greg

답변

1

당신은보기에 orderBy 필터를 사용하거나 최신 포스트 Posts 배열을하고 반환 $scope의 기능, 예를 가질 수 중 하나

<!-- 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