我有一个名为“问卷”的容器模板,单击“下一步”按钮会一个接一个地显示问题。单击下一个按钮时,后台有一些逻辑将为我提供下一个问题的路线。我将更改问卷中的问题模板。
<template name="questionnaire">
<h1>Snapwiz questionnaire</h1>
<h3>Question</h3>
{{> yield region="singleQuestion"}}
<button class="next">Next</button>
</template>
Template.questionnaire.events({
'click .next':function(event,template){
Meteor.call('nextQuestion',Router.current().params._id,function(err,res){
if(res){
Router.go('/question/'+res);
}
});
}
});
Router.route('questionnaire',{
yieldTemplates:{
'question1':{to:'singleQuestion'}
}
});
Router.route('question',{
path:'question/:_id',
action:function(){
this.render('question'+this.params._id,{to:'singleQuestion'});
}
});
有许多简单的问题模板,如“question1”、“question2”等,只需单击下一步按钮即可显示。
当我们第一次点击链接“ http://localhost:4000/questionnaire ”时。“question1”模板默认显示。现在,当用户单击“下一步”按钮时,我们从服务器获取问题 ID 并显示该问题模板。因此,单击下一步按钮将使我们进入“ http://localhost:4000/question/2 ”,向我们显示 question2 模板。
到目前为止,一切都很顺利。
但是当我们直接在浏览器中输入“ http://localhost:4000/question/2 ”并重新加载时,问题就出现了。由于未加载其容器,该页面变为空白。
那么解决这个问题的最终方法是什么?我觉得如果我们在路由器中检测到“热推送代码”,那么我们可能也可以渲染容器模板,但是我们应该怎么做呢?而且我不确定哪个是最好的方法。
任何想法或帮助表示赞赏。