2015-04-17 75 views
0

我试图访问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> 
       <% } %> 

     <% } %> 

回答

0

您需要更改i别的东西,因为它覆盖在外部范围的循环中i

您还没有访问followers属性。

你的内循环应该是这样的:

<% for (var j = 0; j < lists[i].followers.length; j++) { %> 
    <% if (list[i].followers[j] == userId) { %> 
    <button>Follow</button> 
    <% } else { %> 
    <button>Unfollow</button> 
    <% } %> 
<% } %> 
4

嵌套循环和条件完全由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> 
    <% } %> 

<% } %> 
+0

谢谢你看起来像我需要的语法,它几乎可以工作,出于某种原因它根本不呈现第二个条件。我有5个虚拟企业,其中用户遵循2个,并且2个按钮正在渲染,但没有渲染其他。 – user2947979

+0

这个问题的声音更具体一些,取决于渲染的模型。如果我能看到这些数据,我只能帮助你,因为在EJS方面它应该可以正常工作。 –

+0

尝试使用该数据更新您的问题,预期结果和结果。 –