簡體   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