好奇我是否做对了,如果不是,你们将如何处理这个问题。
我有一个 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 文件中的这个数据对象,这样我就可以在将对象发送回服务器以更新数据库之前,通过单击按钮来操作对象。
我已经能够通过将“数据”对象保存在 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);
然而,这种字符串化/解析业务感觉很混乱。我知道我可以将我的数据对象的值绑定到我的 Jade 模板中的 DOM 对象,然后使用 jQuery 获取这些值,但我想访问从我的客户端 JS 中的 Express 返回的实际对象。
我的解决方案是最优的,你们将如何做到这一点?