Это более организованно, чтобы все ваши данные выборку точек в помощниках. Таким образом, вы можете сделать это:
routes.js
Router.route('/post/:_id', {
name: 'post',
template: 'post'
});
post.js
Template.post.helpers({
post: function() {
var postId = Router.current().params._id;
return Posts.findOne({_id: postId});
}
});
Помните, что если вы не подписавшись (сообщения) в любой другой файл, вы можете подписаться на сам маршрутизатор:
routes.js (с подпиской)
Router.route('/post/:_id', {
name: 'post',
template: 'post',
waitOn: function() {
return Meteor.subscribe('posts');
}
});
Обновление:
Router.current().params._id
кажется есть проблема, он будет возвращать все Id для этого маршрута ранее бежал.
Так перестроенный путь должен быть (пример из моего приложения):
route.js
Router.route('/play/:gameId', {
name: 'play',
template: 'gamesPlay',
waitOn: function() {
return Meteor.subscribe('games');
},
onBeforeAction: function() {
Session.set('gameId', this.params.gameId);
console.log('game id set '+Session.get('gameId'));
this.next();
},
onStop: function() {
// do something when user navigate away from this route
}
});
games.js
Template.gamesPlay.helpers({
game: function() {
var gameId = Session.get('gameId'); //instead of Router.current().params.gameId;
var game = Games.findOne({_id: gameId});
return game;
}
});
Отлично! Как насчет моего списка сообщений? Должен ли он по-прежнему использоваться в качестве помощников? 'Template.posts.helpers ({posts: function() {return Posts.find();}});' – Jamgreen
Отредактировано мое сообщение, чтобы рассказать об этом. – saimeunt