2015-09-27 85 views
2

我是node.js的初学者。
我的index.ejs文件有一个包含header.ejs文件。除了我无法将值传递给header.ejs中的变量status以外,一切正常。将变量传递给node.js中的res.render?

index.ejs

<html> 
. 
. 
<title> <%= title %> </title> 
. 
. 
<% include ../partial/header.ejs %> 
. 
. 
</html> 

header.ejs

<header> 
. 
. 
<p>logged in status: <%= status %> </p> 
. 
. 
</header> 

app.js

. 
. 
. 
app.get('/', function(req, res) 
{ 
    // not working :(
    res.render('index', { 
     "status":"loggedin", 
     "title":"home" 
    }); 
}); 
. 
. 
. 

回答

1

有你的结构乱一些。

  1. <title>应该在<head>之内。
  2. <p>应该在<body>之内。
  3. 请注意,您可能会在模板中混淆<head><header>标记。您可以了解差异here

这是我希望会为你工作的例子:

index.ejs:

<html> 
<head> 
    <title> <%= title %> </title> 
</head> 
<body> 
    <% include ../partial/header %> 
</body> 
</html> 

header.ejs:

<p>logged in status: <%= status %> </p> 
+0

谢谢。我知道这一点,但我并没有将头脑和头脑混淆。我只是尖叫,专注于我的问题。 App.js呈现index.ejs。但是为了渲染index.ejs,它需要首先渲染header.ejs。我怎样才能做到这一点?任何替代方法? – WWJ

+0

@WWJ,尝试从包含语法中删除'.ejs'。在EJS中,只要您的节点进程具有对其的读取访问权限,就可以包含任何模板文件。 – Selfish

+0

是的,完美的。那正是我想要的。 – WWJ