如何在hogan-express模板引擎中传递数组
如何使用hogan-express将下面的数组传递给HTML页面? 我正在尝试,但似乎并没有工作。
我的代码:
apiRouter.get('/myPosts', function(req, res, next){ userModel.findOne({'profileID':req.session.facebookProfileId}, function(err, userPosts) { if(userPosts) { res.render('myPosts', {title:siteName + ': My Posts', posts:userPosts.posts}); } else { console.log('You do not have any posts'); } }) })
顺便说一下, userPosts.posts
如下所示:
["123","124","125"]
myPosts.html页面如下:
<!doctype html> <head> <meta charset="UTF-8"> <title>{{title}}</title> </head> <body> <p><a href="/posts?id={{posts[0].value}}">Post 1</a></p> <p><a href="/posts?id={{posts[1].value}}">Post 2</a></p> </body> </html>
顺便说一下,{{title}}位正在通过。
总之:你不能,至less不是那样的。
你可以做的是遍历post:
{{#posts}} <p><a href="/posts?id={{.}}">Post 1</a></p> {{/posts}}
但是,这会给您带来每个链接的文本内容问题( “Post 1” )。 为了解决这个问题,你需要处理数组服务器端,然后再传递给它。
例如:
res.render('myPosts', { title : siteName + ': My Posts', posts : userPosts.posts.map(function(postId, idx) { return { postId : postId, postNum : 1 + idx }; }) });
和模板:
{{#posts}} <p><a href="/posts?id={{postId}}">Post {{postNum}}</a></p> {{/posts}}
呈现的HTML将如下所示:
<p><a href="/posts?id=123">Post 1</a></p> <p><a href="/posts?id=124">Post 2</a></p> <p><a href="/posts?id=125">Post 3</a></p>