2014-04-08 2 views
10

나는 주석 기능을 사용하여 응용 프로그램을 작성하고 있습니다. 그 결과 주석이 작성된 콜렉션과 주석 콜렉션 모두에 등록해야합니다.철제 라우터의 여러 구독

<template name="bookView"> {{> book}} {{> comments}} </template>

this.route('book', { 
    path: '/book/:_id', 
    template: 'bookView', 
    waitOn: function() { return Meteor.subscribe('book');}, 
    action: function() { 
     if (this.ready()){ 
      this.render(); 
     } 
     else 
      this.render('loadingTemplate'); 
    }, 
    data: function() {return Books.findOne(this.params._id);} 
}); 

을하지만 지금은 그 책에 속한 모든 코멘트를로드하려는 : 지금은 다음과 같습니다. 또는 Template.comments.rendered에서 댓글 구독을 처리해야합니까?

답변

27

그래 당신은 두 가지 방법이있다. 어레이를 여러 콜렉션에 등록 할 수 있습니다. 이것은 모든 의견을 즉시 보여줄 때 당신이가는 길일 것입니다.

this.route('book', { 
     path: '/book/:_id', 
     template: 'bookView', 
     /* just subscribe to the book you really need, change your publications */ 
     waitOn: function() { 
     return [Meteor.subscribe('book', this.params._id), 
       Meteor.subscribe('comments', this.params._id)]; 
     }, 
     data: function() { 
     return { 
     book : Books.findOne(this.params._id), 
     comments: Comments.find(this.params._id)} 
     } 
    }); 

사용자가 요청할 때까지 댓글을 표시하고 싶지 않으면. 다른 방법을 따를 수 있습니다 :

buttonclickbookId을 세션 변수로 설정할 수 있습니다. Session 변수에 제공된 bookId을 사용하여 comments 컬렉션에 가입하는 Deps.autorun 함수를 정의 할 수 있습니다. 주석 템플릿에서는 일반 수집 요청 만하면됩니다. 이 방법에 대한 더 많은 힌트가 필요하면 알려주세요.

+0

나는 데이터가 파싱되고 유령 0.8 렌더러가 클라이언트에 도착하기 전에 동일한 문제와 문제점을 가지고있다. 구독이 성공적으로 완료되었는지 어떻게 확인할 수 있습니까? – Tobi

+0

waitOn 함수는 데이터가 수신 될 때까지 항상 대기합니다. 따라서 귀하의 가입은 항상 성공해야합니다. – chaosbohne

+0

tempalate 이벤트에서 서적 데이터에 액세스하는 방법은 무엇입니까? – Sysrq147

5

waitOn 함수는 구독 핸들 배열을 반환하여 여러 구독을 기다릴 수 있습니다. 컨트롤러에서

논리 :