正在打印Console.log而<%=不是

时间:2015-05-27 00:47:22

标签: javascript ejs

我有这个代码的问题是,<%= 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%>
    <% } }%>
    <% } %>
    <%  }); %>

    <%  } %>
    <%  } %>
    <%  } %>
    <%  } } %>

1 个答案:

答案 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,它只会循环遍历已存在的属性。