2014-10-17 6 views
0

У меня есть список имен в шаблоне postlist. Это «имена пользователей» человека, создавшего сообщение. Я создал ссылку href, так что, когда пользователь нажимает на имя, они маршрутизируются/направляются на новый шаблон «viewpost» и могут просматривать полный почтовый документ.Метеор: шаблон рендеринга внутри шаблона

Но, я хотел бы, чтобы шаблон «viewpost» отображался там, где я положил {{> yield}} внутри шаблона postlist. Как настроить layourTemplate, потому что у меня уже есть одна работа для другой части приложения.

Конечно, этот почтовый документ, очевидно, должен измениться в зависимости от того, какое имя пользователь нажимает.

Think Meteor todos example. В зависимости от того, нажимаете ли вы «join» или «signin», отображаются соответствующие шаблоны.

Так что у меня есть до сих пор следующее.

postlist.html (отображается список поля «полное имя» в почтовых документах).

<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

Так, кажется, не будет много из перекрытия контента между «viewpost» шаблоном и «postlist» шаблоном, я думаю, что это на самом деле будет чище просто используйте {{> 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

Смежные вопросы