Вот мой шаблон onCreated и вспомогательная функция. Я предоставил встроенные комментарии, чтобы внести некоторую ясность. Я вижу, что self.post в конечном итоге установлен, потому что он отображается на моей консоли, когда я регистрирую Template.instance(). Однако, когда я регистрирую Template.instance().post, он всегда не определен.
Template.default.onCreated(function() {
var self = this;
self.autorun(function() {
var postId = FlowRouter.getParam('post_id');
self.subscribe('onePost', postId);
self.post = Posts.findOne(FlowRouter.getParam('post_id'));
});
});
Template.default.helpers({
poststage: function(stage) {
console.log(Template.instance()); // I can see post object here
console.log(Template.instance().post; //always undefined
if(Template.instance().post) {
// never true
return Template.instance().post.stage == stage;
}
}
});
Template.default.events({
'submit form':function(event, instance) {
Meteor.call('someFunc', instance.post.anotherField);
}
});
Изменить: я должен добавить, что я стараюсь не писать запрос дважды, потому что я также использую его в событиях шаблона. (см. код).