所以我正在使用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']
答案 0 :(得分:2)
您可以使用interpolation进行此操作:
script.
emails= !{JSON.stringify(emails)};
请注意,脚本标签后面有一个句点,这告诉哈巴狗将标签内的内容视为plain text。如果没有该时间段,它将创建脚本标签,然后创建电子邮件标签(<script><email></email></script>
),这不是您想要的。
现在您处于纯文本模式,您可以使用内部带有stringify的未转义插值命令(!{...}
)将模板变量输出为JavaScript变量。