我有这个代码的问题是,<%= propOfProp%>
的行没有打印任何内容,如果我用console.log(propOfProp)
替换它,它将起作用
<% for (var x in data){ %>
<% if(data.hasOwnProperty(x)){ %>
<% var obj = data[x]; %>
<% for( var prop in obj){ %>
<% if(obj.hasOwnProperty(prop)){ %>
<% if(isNaN(prop)){ %>
<% findName([prop],function(err,data){ %>
<% for(var h in data[0]) {%>
<% var obj2 = data[0][h]; %>
<% for (propOfProp in obj2) { %>
<% if(isNaN(propOfProp)){ %>
<%= propOfProp%>
<% } }%>
<% } %>
<% }); %>
<% } %>
<% } %>
<% } %>
<% } } %>
答案 0 :(得分:0)
什么&lt;%=%&gt;在ejs中意味着插入并转义它(参见https://github.com/tj/ejs)并且不只是打印出一个js var,你可能想做&lt;% - %&gt; (见Render a variable as HTML in EJS)...
所以修复就是
<% for (var x in data){ %>
<% if(data.hasOwnProperty(x)){ %>
<% var obj = data[x]; %>
<% for( var prop in obj){ %>
<% if(obj.hasOwnProperty(prop)){ %>
<% if(isNaN(prop)){ %>
<% findName([prop],function(err,data){ %>
<% for(var h in data[0]) {%>
<% var obj2 = data[0][h]; %>
<% for (propOfProp in obj2) { %>
<% if(isNaN(propOfProp)){ %>
<%- propOfProp%>
<% } }%>
<% } %>
<% }); %>
<% } %>
<% } %>
<% } %>
<% } } %>
但是,在不久的将来,您可能需要重新考虑在前端执行所有代码,因为您最终会以任何方式调用服务器。 EJS的想法是在服务器上呈现代码并且已经存在所有数据,然后您可以遍历它。如果可能的话,将其放在底部的标签中或在控制器上进行(如果这是MVC)。此外,您不需要遍历属性然后使用hasOwnProperties,它只会循环遍历已存在的属性。