【问题标题】:How to render string into javascript in pug如何在 pug 中将字符串呈现为 javascript
【发布时间】:2019-02-28 18:33:40
【问题描述】:

所以我正在使用 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'] 

【问题讨论】:

  • 尝试添加您尝试过的和无效的。添加错误(如果有)。 emailList =emails; 不工作吗?
  • 不,emailList =emails 不起作用,这是一个机密项目,所以我不能真正分享太多,但请稍候提供一些额外的细节
  • 检查这个答案stackoverflow.com/a/20294680。有用吗?

标签: express pug


【解决方案1】:

您可以使用interpolation 来执行此操作:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2013-10-19
    • 2018-10-07
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2018-08-30
    相关资源
    最近更新 更多