2014-07-17 3 views
1

페이스 북의 채팅 기능과 비슷한 채팅 (Template.chatlist) 기능을 만들려고합니다. 페이스 북의 채팅 기능과 유사합니다. 사용자가 탐색 할 때 배경의 페이지가 변경되는 동안 채팅 상자가 지속됩니다. 사이트의 다른 부분으로). 그래서 채팅 상자를 레이아웃 페이지의 핸들 막대 템플릿에 넣었습니다 (그래서 {{> 출력}} 템플릿에서 렌더링하지 않았습니다). 문제는 레이아웃을로드하기 전에 구독을 기다리지 않고 (layout.html에 대한 경로가 없으므로 라우터에서 waitOn을 설정할 수 없음) 사용자 컬렉션에서 정보를 가져올 수 없다는 것입니다. .유성 : layout.html을 구독 하시겠습니까?

알아 두어야 할 점은 subscription이 제대로 완료된 후에 layout.html 페이지가로드되기를 기다리는 방법은 무엇입니까? 물론, 모든 페이지의 출력 템플릿 안에 채팅 템플릿을 넣어서 제대로 대기하게 할 수는 있지만,이 방법으로 할 필요가없는 방법이 있습니까?

<main class="main container" id="central"> 
    {{> yield}} 
    {{> chatlist}} 
</main> 

이것은 일종의 layout.html과 같습니다. chatlist 템플릿은 yield 섹션에 없기 때문에 어떤 데이터 구독도 기다리지 않습니다. (따라서 라우터가 제어하지 않습니다)

Template.chatlist.helpers을 입력하고 도우미에 사용자 데이터를 등록했지만 어떤 이유로 테스트했을 때 콘솔 로깅 Users.count 콘솔이 0으로 돌아옵니다.

답변

2

지역 사용

<template name="layout"> 
    <aside> 
    {{> yield region='aside'}} 
    </aside> 

    <div> 
    {{> yield}} 
    </div> 

    <footer> 
    {{> yield region='footer'}} 
    </footer> 
</template> 

Router.map(function() { 
    this.route('home', { 
    path: '/', 
    template: 'myHomeTemplate', 
    layoutTemplate: 'layout', 
    yieldTemplates: { 
     'myAsideTemplate': {to: 'aside'}, 
     'myFooter': {to: 'footer'} 
    }, 
    waitOn: function() { 
     // ... 
    } 
    }); 
}); 

Iron Router docs를 참조하십시오.