gpt4 book ai didi

node.js - 嵌套 EJS 模板循环

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:51 27 4
gpt4 key购买 nike

我正在尝试访问 EJS 模板中的嵌套数组。在我的后端,我渲染了这个,“lists”是一个业务数组,userId 是 session 中的用户 _id。

res.render('listOfBusinesses', {lists:business, userId:loggedUserID});

在前端,我循环遍历列表并获取正确的属性值,但是其中一个属性是关注者 _ids 数组,我需要与 userId 进行交叉检查以提供关注按钮或取消关注按钮。

前端看起来像这样:

<% for (var i = 0; i < lists.length; i++) { %>

<div class="col-xs-6 col-sm-4 panel">
<a href="/busProfileFromUser?busId=<%= lists[i]._id %>">
<img src="<%= lists[i].imgpath %>" class="img-responsive follow-img" />
</a>
</div>

上面的内容按预期工作,但属性 lists[i].followers 是一个数组,我需要再次循环,但无法获得正确的语法。

我的想法是这样的:

for (var i = 0; i< lists[i].followers.length; i++){

if (list[i] == userId) {
<button>Follow</button>
} else {
<button>Unfollow</button>
}
}

非常感谢您的建议!!

几乎已经解决了这个问题,但卡住了一段时间,但部分问题是在条件语句中使用了传递给渲染的变量,该条件语句正在检查对象 id 是否等于字符串。所以我调用了 toString() 以确保它们是字符串。它现在返回正确的按钮,但是它只返回一个按钮,并且不显示其余企业列表的任何内容。谁能解释为什么其他按钮不显示

        <% for (var j = 0; j < lists[i].followers.length; j++) {%>

<% if (lists[i].followers[j].toString() == userId.toString()) { %>
<button>Unfollow</button>

<% } else { %>
<button>FOLLOW</button>
<% } %>

<% } %>

最佳答案

EJS 完全支持嵌套循环和条件。一旦遍历某个列表,您就可以采用另一个迭代变量并进行嵌套循环。

<% for (var i = 0; i < lists.length; i++) {%>
<a href="/busProfileFromUser?busId=<%= lists[i]._id %>">
<img src="<%= lists[i].imgpath %>" class="img-responsive follow-img" />
</a>

<!-- Nested loop below -->
<% for (var j = 0; j < lists[i].followers.length; j++) {%>
<li>
<% if (lists[i].followers[j] == userId) { %>
<button>Follow</button>
<% } else { %>
<button>Unfollow</button>
<% } %>
</li>
<% } %>

<% } %>

关于node.js - 嵌套 EJS 模板循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com