获取ejs中的数据包括express-partials

时间:2016-07-28 12:43:30

标签: node.js express layout include views

我想将数据传递给ejs布局中的include。我正在使用express和express-partials

在controller.js中我有这个:

exports.index = function(req, res, next) {
    res.render('index', {uptime:'3'});
};

这是layout.ejs:

 <!DOCTYPE html>                                                                  
<html>                                                                            
  <head>                                                                          
    <%- include head %>                                                           
  </head>                                                                         
  <header>                                                                        
    <%- include nav %>                                                            
  </header>                                                                       
  <body>                                                                          
  <section>                                                                       
    <%- body %>                                                                   
  </section>                                                                      
  </body>                                                                         
  <footer>                                                                        
  </footer>                                                                       
</html>

这是nav.ejs:

<li><%= uptime %></li>

我收到此错误:

    ReferenceError: /root/apps/webpanel/webpanel/views/nav.ejs:23
    21|     </li>
    22|       </ul>
 >> 23|       <li><%= uptime %></li>
    24| 
    25| 
    26| 

uptime is not defined

如果我将正常运行时间放在index.ejs中,则错误消失,但我希望获得导航和正文的不同视图...

正确工作的最佳解决方案是什么?或者我做错了什么?:/ 谢谢!!

2 个答案:

答案 0 :(得分:0)

也许在此代码中:res.render('index', { uptime : '3'});

您选择呈现index.ejs

但是uptime

中的layout.ejs

你说res.render('layout', { uptime: '3'});做得很好

您应该了解.render()含义的第一个参数,并确保您需要呈现哪个模板。

答案 1 :(得分:0)

我建议你进入会话,在某些路线上访问,有点像:

exports.index = function(req, res, next) {
    req.session.uptime = 3;
    res.render('index');
};

<li><%= session.uptime %></li>