0

我的 Node.js 代码中有以下函数,它呈现 HTML 页面并将其传递给一个名为htmlParamObj

exports.getPage = function (req, res, next) {

    var htmlParamObj= {
        propertyOne: 'yada',
        propertyTwo: 'yada yada'
       };
    res.render('myPage.html',htmlParamObj);

};

我可以像这样使用 EJS 访问传入参数 ( htmlParamObj) <% propertyOne %>,但我不知道如何htmlParamObj通过文档本身访问。我相信 htmlParamOb' 将附加到 html 的文档中-但是我可以在文档的哪个字段中找到它?是在头部、身体还是子节点中?在哪里?

4

2 回答 2

2

传递的对象仅在呈现 HTML 时使用,不会以任何方式传递给浏览器。

如果您需要页面内的数据,则需要将其放在那里。

当我需要将复杂数据传递给客户端脚本时,我使用的解决方案是在我的 HTML EJS 文件顶部附近放置一个脚本标签,并用我的数据填充它。例如,我可能会将以下内容添加到我的模板中:

<script>
    window.MY_DATA = <%= JSON.stringify(myData) %>
</script>

请注意,由于 JSON 是 javascript 的子集,我可以使用JSON.stringify将我的数据序列化为适合放置在脚本标签内的形式,并将其分配给我想要的任何变量。

这里的限制是你不能发送任何不能用JSON.stringify. 不是一个沉重的负担,但如果你想发送一个函数或其他对象,可能会绊倒你。

于 2014-12-23T02:07:32.100 回答
0

我找到的解决方案是在我的 HTML 中定义一个全局属性,如下所示:

<a name="team" value="<%=team._id%>"></a>

然后我可以像这样在任何脚本中访问它:

<script>
var team = document.getElementsByName('team');
</script>

这将返回正确的对象。但是,我认为这不是最好的答案,特别是考虑到任何全局定义的变量通常都是一个坏主意。我希望对这个问题给出另一个答案。

于 2014-12-23T01:26:23.070 回答