我正在使用ejs模板在sails应用程序中进行服务器端渲染。在模板中,我发送脚本标记内的partial
以在客户端使用,如下所示:
<div id="components">
<% for (var idx = 0; idx < gallery.components.length; idx++) { %>
<%- partial('partials/component', gallery.components[idx]) %>
<% } %>
</div>
<script>
var galleryObj = <%- JSON.stringify(gallery) %>;
</script>
这很好用。
但是,当我在模板中添加<div id="components">
<% var galleryJSON = JSON.stringify(gallery); %>
<% for (var idx = 0; idx < gallery.components.length; idx++) { %>
<%- partial('partials/component', gallery.components[idx]) %>
<% } %>
</div>
<script>
var galleryObj = <%- galleryJSON %>;
</script>
更高时,JSON.stringify会抛出“循环对象”错误。因此,以下内容在模板文件中引发错误:
partial
但是,它适用于此修改:
include
显然,使用partial正在修改模板使用的库对象,但我不确定如何。
有助于调试的一些注意事项:
gallery.components[idx]
命令可能特定于使用来自sails应用程序的ejs。我认为“普通”ejs使用gallery
来达到类似效果。createdAt
都有一些与整个forEach
对象的属性键匹配的属性键,例如const idMatch = {
id: 'id2',
id2: 'id3',
id3: 'id4',
id4: 'id5',
id5: 'id6'
};
Object.keys(idMatch).forEach((key) => {
const nextKey = $('#' + idMatch[key]);
const currentKey = $('#' + key);
currentKey.click(function() {
if (nextKey.is(":hidden")) {
nextKey.slideDown("fast");
}
});
});
等。谁能告诉我发生了什么?