小编use*_*979的帖子

嵌套的EJS模板循环

我正在尝试访问EJS模板中的嵌套数组.在我的后端,我正在渲染这个,'lists'是一个业务数组,userId是来自会话的用户_id.

res.render('listOfBusinesses', {lists:business, userId:loggedUserID});
Run Code Online (Sandbox Code Playgroud)

在前端我循环遍历列表并获取正确的属性值,但是一个属性是一组追随者_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>
Run Code Online (Sandbox Code Playgroud)

上面的工作正常,但属性lists[i].followers是一个数组,我需要再次循环,但只是无法得到正确的语法.

我正在考虑以下几点:

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

  if (list[i] == userId) {
    <button>Follow</button>
  } else {
    <button>Unfollow</button>
  }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议!!

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

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

            <% if (lists[i].followers[j].toString() == userId.toString())           { %>
              <button>Unfollow</button> …
Run Code Online (Sandbox Code Playgroud)

templates ejs node.js

1
推荐指数
1
解决办法
4317
查看次数

标签 统计

ejs ×1

node.js ×1

templates ×1