다음은 내 템플릿 onCreated 및 도우미 함수입니다. 나는 약간의 명확성을 추가하기 위해 인라인 코멘트를 제공했다. template.instance()를 로그 할 때 내 콘솔에 나타나기 때문에 self.post가 결국 설정된다는 것을 알 수 있습니다. 그러나 Template.instance(). post를 기록하면 항상 정의되지 않습니다.템플릿 onCreated에서 findOne을 사용하고 도우미에서 액세스하는 방법
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);
}
});
편집 : 필자는 템플릿 이벤트에서 사용하기 때문에 쿼리를 두 번 쓰는 것을 피하려고합니다. (코드 참조).
Reactivevar가 meteorchef 반응 –
findOne에 도움이 될 것은 기본적으로 반응이다. –