想知道我是否做得正确,如果不是的话,你们会如何处理。
我有一个Jade模板,需要从MongoDB数据库检索一些数据并且我还需要在客户端JavaScript文件中访问这些数据。
我正在使用Express.js,并将数据发送到Jade模板,如下所示:
var myMongoDbObject = {name : 'stephen'};
res.render('home', { locals: { data : myMongoDbObject } });
那么在 home.jade 中,我可以做这样的事情:
p Hello #{data.name}!
它的输出结果是:
Hello stephen!
现在我想要的是在客户端JS文件中也能访问这个数据对象,这样我就可以在按钮点击之前操作这个对象,然后将其POST回服务器以更新数据库。通过将"data"对象保存在Jade模板中的隐藏输入字段中,然后在客户端JS文件中获取该字段的值,我已经成功实现了这一点。
在home.jade文件内:
- local_data = JSON.stringify(data) // data coming in from Express.js
input(type='hidden', value=local_data)#myLocalDataObj
那么在我的客户端JS文件中,我可以这样访问local_data:
在myLocalFile.js内部
var localObj = JSON.parse($("#myLocalDataObj").val());
console.log(localObj.name);
但是这个 stringfy/解析的过程感觉很混乱。我知道我可以将数据对象的值绑定到我的 Jade 模板中的 DOM 对象上,然后使用 jQuery 获取这些值,但是我想要在客户端 JS 中访问从 Express 返回的实际对象。
我的解决方案是否最优,你们会如何完成这个任务?