2013-01-21 4 views
1

Comments 콜렉션이 있습니다. specfic Content에 대한 의견은 모두 클라이언트에 게시됩니다.Meteor 클라이언트 쪽 페이지 매기기

페이지 매김이 없으면 템플릿에 성공적으로 렌더링하고 새로운 코멘트를 삽입하고 반응을 즐길 수 있습니다.

모든 의견이 클라이언트에게 전송 된 지금은 문제가 없지만 FB처럼 페이지를 시각적으로 단순화하기 위해 모든 클라이언트 측 페이지 매김을 구현하고 싶습니다.

  • 댓글 항상 내가 컬렉션의 총 레코드 수를 표시해야합니다
  • (목록의 맨 아래에 새) 창조 타임 스탬프 ASC으로 분류되어 있습니다 (T :

    토끼는 규칙입니다)

  • 나는 의견의 총 수는 현재 표시 보여줄 필요가
  • (C)
  • 더 의견 (내가 링크 '더보기'
  • 가 처음에 내가 5를 보여 보여줄 필요가 C < T)가있는 경우 최근 댓글 (또는 5 개 미만인 경우 모두 포함)
  • 새 댓글 (서버에서 푸시 됨)은 목록 끝에 즉시 표시됩니다.
  • '더보기'링크를 클릭하면 최대 10 이

    • : - 추가 의견을 같이합니다 (현재 보이지 않는에서 최신 그들 모두가 그 이미 표시된 것과 오래된) 목록의 시작 부분에 표시됩니다

    그래서 효과적으로 때문일 수 있습니다 minTime 변수

  • 처음
  • 내가
  • 템플릿이 아닌이 값보다 오래된 모든 코멘트를 렌더링하는 링크가 현재 값보다 오래된 10 최신 코멘트의 타임 스탬프로 설정을 클릭하면 5 최신 주석의 타임 스탬프로 설정
  • 어떤 점 계산 값 C와 T에서
  • 하고

을 저장 나는 Session 변수의 무리와 함께이 문제를 해결하기 위해 시도했지만 성공하지 못했습니다 - 나는 점점과에서이 바르 설정을 어떤 시점에서 생각 템플릿 재귀 또는 무엇을 리드? 추가 문제는 첫 번째로 minTime을 계산해야하는 '초기'순간을 안정적으로 알 수 없다는 것입니다. 템플릿을 처음 만들 때나 메모를 동기화 할 때 여전히 동기화되지 않을 수 있습니다.

그래서 질문 : 요구 사항을 충족시키는 올바른 방법은 무엇입니까?

+2

입니까? – Rahul

+0

분명히 : 그것이 작동하도록하는 방법 – Guard

답변

1

해결 방법 : 한편

Meteor.startup(function(){ 
    Session.set('number_of_visible_comments', 5); 
}); 

Template.comments = function() { 
    return Comments.find({content: id_of_content}, { 
     sort: {timestamp: -1}, 
     limit: Session.get('number_of_visible_comments') 
    }); 
}; 

Template.total_number_of_comments = function() { 
    return Comments.find({content: id_of_content}).count(); 
}; 

Template.number_of_visible_comments = function() { 
    return Session.get('number_of_visible_comments').count(); 
}; 

Template.comments.events({ 
    'click': function() { 
     var count = Session.get('number_of_visible_comments') + 10; 
     Session.set('number_of_visible_comments', count); 
    } 
}); 
+0

나는 이것을 이미 끝냈다. 그러나 나의 질문에 대한 정확한 대답은 아니다. 이 솔루션에서 새로운 코멘트가 도착하면 _currently visible_ 덧글이 사라집니다. – Guard

+0

또한이 코드는 가장 최근에 가장 오래된 코멘트를 표시합니다. 이것은 커서에서'.fetch()'를하고 그 결과에'return _.sortBy'를 써서 수정할 수 있습니다. 커서가 아닌 다른 것을 반환 할 때 전체 템플릿은 콜렉션 업데이트시에 다시 렌더링됩니다 – Guard

+0

는 정렬을 변경합니다 방향을 바꾸려면 -1을 -1로 설정하십시오. 가장 오래된 주석이 사라질 때 새 주석이 들어오지 않게하려면 $를 사용하거나 $ limit 또는 _ timestamp 비교를 만드십시오. – ram1

관련 문제