繁体   English   中英

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

[英]Console.log is printing while <%= is not

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

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

ejs中<%=%>的意思是内插和转义(请参见https://github.com/tj/ejs ),而不仅仅是打印js var,您可能想做<%-%>(请参见在EJS中将变量呈现为HTML )...

所以解决办法是

<%  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,只需循环遍历已经存在的属性即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM