2014-10-17 3 views
0

'postlist'템플릿에 이름 목록이 있습니다. 이들은 게시물을 만든 사람의 '사용자 이름'입니다. 사용자가 이름을 클릭하면 라우트되고 새로운 템플리트 'viewpost'로 보내지고 전체 게시물 문서를 볼 수 있도록 href 링크를 만들었습니다.Meteor : 템플릿 내에서 템플릿 렌더링

그러나 'postpost'템플릿 대신 'viewpost'템플릿을 렌더링하여 {{> yield}}를 렌더링하고 싶습니다. layourTemplate은 이미 앱의 다른 부분에서 작동하기 때문에 어떻게 구성해야합니까?

물론이 포스트 문서는 분명히 사용자가 클릭하는 이름에 따라 변경되어야합니다.

Think Meteor todos 예. '가입'또는 '로그인'중 어떤 것을 클릭 하느냐에 따라 관련 템플릿이 렌더링됩니다.

그럼 내가 가진 것은 다음과 같습니다.

postlist.html (게시 문서의 'fullname'필드 목록 표시). 'viewpost'템플릿과 'postlist'템플릿 사이에 콘텐츠 중복 많이있을 것 같지 않기 때문에

<template name="postlist"> 
<div class="container"> 
<div class="col-sm-3"> 
    {{#each post}} 
    <li><a href="{{pathFor 'viewpost'}}" >{{fullname}}</a></li> 
    {{/each}} 
</div> 
</div> 
{{> yield}} 
</template> 

router.js

Router.map(function(){ 
this.route('postlist',{ 
    path: '/postlist', 
    template: 'postlist', 
    waitOn: function(){ 
    return Meteor.subscribe('posts'); 
    }, 
    data: function(){ 
    return {post: Posts.find({})}; 
} 
}); 
this.route('viewpost',{ 
    path: '/viewpost/:_id', 
    template: 'viewpost', 
    waitOn: function(){ 
    return Meteor.subscribe('posts'); 
    }, 
    data: function() { return Posts.findOne(this.params._id); } 
}); 
}); 
+0

'yield region ='post_body ''를 만들고이 영역에 게시물을 렌더링 할 수 있습니다. 더 많은 것을 읽으십시오 http://www.manuel-schoebel.com/blog/iron-router-tutorial – yoK0

답변

1

, 나는 실제로 청소기 될 것이라고 생각 yield 대신에 {{> viewpost currentPost}}을 사용하고 프로그래밍 방식으로 currentPost를 설정하십시오. 예를 들어, postlist 템플릿에, 당신과 같이, 현재 게시물에 대한 데이터를 반환하는 currentPost 변수를 가질 수 있습니다

Template.postlist.helpers({ 
    currentPost: function() { 
     return Posts.findOne(Session.get('currentPost')); 
    } 
}); 

을하고 postlist 템플릿에있는 링크를 클릭하면 바로 세션을 설정합니다.

+1

'{{Template.Dynamic template = 'viewpost'data = currentPost}}'는 {{{ > viewpost currentPost}}'. 'Template.dynamic'의 요점은 동적 템플릿입니다. –

+0

@ PeppeL-G 맞습니다. 저는 제 자신의 앱 중 하나에서 약간 다른 유스 케이스를 생각하고있었습니다. 편집 됨, 감사합니다! :) – mark

관련 문제