2015-04-17 73 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

嘗試使用該數據更新您的問題,預期結果和結果。 –