如何在 hogan-express 模板引擎中传递数组
How to pass an array in hogan-express template engine
如何使用 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}} 位即将通过。
简而言之:你不能,至少不能那样。
您可以做的是遍历帖子:
{{#posts}}
<p><a href="/posts?id={{.}}">Post 1</a></p>
{{/posts}}
但是,这会给您带来每个 link ("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>
如何使用 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}} 位即将通过。
简而言之:你不能,至少不能那样。
您可以做的是遍历帖子:
{{#posts}}
<p><a href="/posts?id={{.}}">Post 1</a></p>
{{/posts}}
但是,这会给您带来每个 link ("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>