如何在pug

时间:2018-09-25 07:41:24

标签: express pug

所以我正在使用Express并创建一个MVC应用程序。我有一个电子邮件列表,我想在前端放入javascript变量并创建自动完成 所以目前控制器看起来像这样:

controller.js

res.render('/page',{emails: emails})

emails是JSON结构,可以根据需要进行字符串化。我的哈巴狗模板如下

div
    input (type = "text" id="suggestion")
    div (class = "custom-suggestion" id="suggestion-list")

最后,我用以下命令覆盖了自定义脚本块:

script.
  var emailList = ///////////i want the email from controller's data

我该如何实现?只要我能将数据传递到javascript端,任何建议都是相当的

编辑 为了使代码更清晰:

app.js

var app = express();
app.set('view engine', 'pug');
router = express.Router();
router.get('/',function(req,res,next){
    emails = ['abcd@abc.com','def@def.com','123@123.com'];
    res.render('index', {emails:emails})
})
app.use(router);

index.pug

extend layout

block content
    h1= title

block scripts
    script
       emails= emails /// not working

       ////////////// how to render this line as 
       ////////////// emails = ['abcd@abc.com','def@def.com','123@123.com'] 

1 个答案:

答案 0 :(得分:2)

您可以使用interpolation进行此操作:

script.
  emails= !{JSON.stringify(emails)};

请注意,脚本标签后面有一个句点,这告诉哈巴狗将标签内的内容视为plain text。如果没有该时间段,它将创建脚本标签,然后创建电子邮件标签(<script><email></email></script>),这不是您想要的。

现在您处于纯文本模式,您可以使用内部带有stringify的未转义插值命令(!{...})将模板变量输出为JavaScript变量。