我试图访问EJS模板中的嵌套数组。在我的后端,我将这个渲染出来,'lists'是一个商业数组,userId是会话中的用户_id。嵌套的EJS模板循环
res.render('listOfBusinesses', {lists:business, userId:loggedUserID});
在前端,我通过列表循环和得到正确的属性值,然而一个属性是跟随_ids,我需要跨越与用户id检查数组给任何后续按钮或一个取消关注按钮。
前端看起来是这样的:
<% 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>
<% } %>
<% } %>
谢谢你看起来像我需要的语法,它几乎可以工作,出于某种原因它根本不呈现第二个条件。我有5个虚拟企业,其中用户遵循2个,并且2个按钮正在渲染,但没有渲染其他。 – user2947979
这个问题的声音更具体一些,取决于渲染的模型。如果我能看到这些数据,我只能帮助你,因为在EJS方面它应该可以正常工作。 –
尝试使用该数据更新您的问题,预期结果和结果。 –