今天早上,我想我终于通过拼凑一个快速的应用程序来看看Handlebars。到目前为止,我很喜欢它(我觉得我更喜欢Handlebars和Jade),但我有一个问题。我玩的应用程序是(又一个)使用Mongo的基本CMS。在/ posts / index页面上,我正在检查并显示帖子:
{{#if posts}}
{{#each posts}}
<h4>{{title}}
<p>{{content}}</p>
{{/each}}
{{else}}
<p>There are no posts.</p>
{{/if}}
这很简单并按预期工作,但我当时想知道在每个帖子的底部添加类似编辑按钮的内容。我想根据用户调整此功能的可见性。如果已登录(我使用Passport的本地策略),我可以通过以下方式轻松查看用户的详细信息:
{{#if user}}
{{user.name}}
{{/if}}
但问题是,如果用户检查 上面的每个,我似乎无法获得。在Handlebars中这可能吗?在Jade过去,我只是使用了类似的东西:
if(posts.length)
each post in posts
#{post.title}
if(user)
...
为了清楚起见,帖子页面的 get 路线是:
router.get('/', function(req, res) {
Post.find({}, function(err, posts) {
res.render('posts/index', {
title: 'Posts',
user: req.user,
posts: posts,
});
});
});
如上所述,我对Handlebars来说真的很新,所以我希望这是非常明显的事情。在此先感谢,我希望你们都有一个伟大的NYE!
答案 0 :(得分:12)
each
,if
作品包围each...else
。user
中的each
,您实际上将尝试访问posts.user
。您可以使用../
。E.g。
{{#each posts}}
<h4>{{title}}
<p>{{content}}</p>
{{#if ../user}}
{{../user.name}}
{{/if}}
{{else}}
<p>There are no posts.</p>
{{/each}}