2016-06-03 4 views
1

hogan-express를 사용하여 HTML 페이지에 다음과 같은 배열을 전달하려면 어떻게해야합니까? 노력하고 있지만 작동하지 않는 것 같습니다.hogan-express 템플릿 엔진에서 배열을 전달하는 방법

는 는

내 코드 : 그런데

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}} 비트가 나오고 있습니다.

답변

2

간단히 말해서, 그렇게는 할 수 없습니다. 당신이 게시물을 반복한다 무엇을 할 수 있는지

:

{{#posts}} 
    <p><a href="/posts?id={{.}}">Post 1</a></p> 
{{/posts}} 

그러나, 즉 각 링크 ("포스트 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> 
+0

사람 와우! 정말 고마워. JS 및 MEAN 스택을 처음 접해서 이상한 장소에 갇히게됩니다. 정말 도움을 주셔서 감사합니다! –