Итак, у меня есть простое представление, которое показывает проект и истории в этом проекте. В железном маршрутизаторе я называю это маршрутом projectShow:
@route 'projectShow', {
path: '/projects/:_id',
template: 'projectsShow'
}
Мой шаблон
<template name="projectsShow">
<div class="row">
I'm a project
{{name}}
<a href="#" id="add-story">New Story</a>
{{#each stories}}
Title: {{title}}
{{/each}}
</div>
</template>
Так что часть, которая меня сбивает с толку, — это правильный выбор данных с сервера и передача их клиенту. То, что я пробовал, публикуется так:
if Meteor.isServer
Meteor.publish "projectAndStories", (id) ->
[Projects.findOne({_id: id}), Stories.find({projectId: id})]
Что мне неясно, так это где и как правильно подписаться на это в роутере/клиенте, а также установить переменную сеанса, чтобы я мог ссылаться на текущий проект при добавлении новых историй.
Я попытался:
# in route
waitOn: ->
Meteor.subscribe('projectAndStories', @params._id)
Session.set('projectId', @params._id)
# template js file
Template.projectShow.project = Projects.findOne({_id: Session.get('projectId')})
Template.projectShow.stories = Stories.find({projectId: Session.get('projectId')})
Тем не менее, это не похоже на то, чтобы сделать это в шаблоне. Что я делаю не так?