[英]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.