Вот мой шаблон onCreated и helper function. Я добавил встроенные комментарии, чтобы добавить некоторую ясность. Я вижу, что self.post в конечном итоге установлен потому, что он появляется на моей консоли, когда я регистрирую Template.instance(). Однако, когда я регистрирую Template.instance(). Post, он всегда не определен.Как использовать findOne в шаблоне onCreated и получить к нему доступ в помощнике
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);
}
});
Edit: Я хотел бы добавить, что я пытаюсь избежать написания запроса в два раза, потому что я также использую его в шаблоне событий. (см. код).
Reactivevar может помочь, на метеорологической реактивности –
findOne по умолчанию реактивен. –