使用express.js上的ejs(ejs-locals)在数据中插入脚本标记

时间:2012-09-22 08:12:42

标签: javascript node.js express ejs

我正在使用ejs-locals表达3.x(https://github.com/RandomEtc/ejs-locals)

如何从包含动态数据的模板插入脚本标记?

在我的layout.ejs中我有

<%- block.scripts %>

在我的页面模板login.ejs中,我想用一些动态数据替换它:

<% block('scripts', "<script> var app = window.app || {}; app.err = <%- JSON.stringify(err) %>, app.q = <%- JSON.stringify(q) %>; </script>") -%>

我收到错误:

500 SyntaxError: Unexpected token % - 我假设因为我不能在这里做<%= JSON.stringigy(err) %>

1 个答案:

答案 0 :(得分:2)

我通过将脚本插入移动到layout.ejs解决了这个问题,因为它始终是相同的。

    <% include script %>
  </body>

否则,您必须终止字符串:

//this works but is rather cumbersome to do on every page template.
  <% block('script', '<script>' +
    'app.req.err = '+ JSON.stringify(err) +";\n" +
    'app.req.q = '+ JSON.stringify(q) +";\n" +
  '</script>') %>