Templates Iron路由器动态模板渲染
在我的meteor项目中,我添加了iron:layout、iron:dynamic模板以及iron:router 我的问题是,如果会话中没有可用数据,如何防止动态模板渲染?原因是,动态模板当前呈现时包含除数据上下文之外的所有html内容。当用户最初到达页面时,这就是问题所在 我在“postlist”模板上有一个姓名列表。这些是创建帖子的人的“用户名”。当用户单击名称时,模板“viewpost”将呈现并传递相关数据…这很好。但如前所述,当用户第一次到达页面时,没有数据上下文。因此,用户可以看到除动态内容之外的所有内容 以下是我目前的代码,以及我从上一篇文章中得到的帮助 HTML:Templates Iron路由器动态模板渲染,templates,meteor,iron-router,spacebars,Templates,Meteor,Iron Router,Spacebars,在我的meteor项目中,我添加了iron:layout、iron:dynamic模板以及iron:router 我的问题是,如果会话中没有可用数据,如何防止动态模板渲染?原因是,动态模板当前呈现时包含除数据上下文之外的所有html内容。当用户最初到达页面时,这就是问题所在 我在“postlist”模板上有一个姓名列表。这些是创建帖子的人的“用户名”。当用户单击名称时,模板“viewpost”将呈现并传递相关数据…这很好。但如前所述,当用户第一次到达页面时,没有数据上下文。因此,用户可以看到除动
这是一种替代的黑客方法,但“理解”并不是好的实践。这就是我想要实现的目标,这样你就有了一个想法。但我想就这个问题提出一些非黑客的建议。多谢各位 html:
以下内容是否不适用于您的目的?我删除了如答案1所示的助手,并尝试了此操作。但是模板仍然会被渲染。我还将模板上的插入更改为{{>viewpost}},但它仍然会被渲染。请参考答案2查看我插入的代码。
<template name="postlist">
<div class="container">
<div class="col-sm-3">
{{#each post}}
<li><a href="#">{{fullname}}</a></li>
{{/each}}
</div>
</div>
{{> Template.dynamic template='viewpost' data=currentPost}}
</template>
Template.postlist.helpers({
currentPost: function(){
return Posts.findOne(Session.get('currentPost'));
}
});
Template.postlist.events({
'click li': function(e){
e.preventDefault();
Session.set("currentPost", this._id);
}
});
<template name="viewpost">
{{#if hasData}}
<div class="container">
Post creator is : {{username}} - Info: {{body_text}}
</div>
{{/if}}
</template>
Template.viewpost.helpers({
"hasData":function(){
return Session.get("currentPost");
}
});