我有一个对象,我使用EJS传递到我的模板中,我继续收到错误Cannot read property 'link' of undefined
,这里是对象,这是模板代码。
我在console.log中找到了对象并得到了这个:
{ _id: 583e4b76f1c8771c17d68ef2,
username: 'asdf',
__v: 0,
favoriteMoments: [],
favoriteEvents: [],
likes: [],
friends: [],
moments: [],
categories: [],
events:
[ { _id: 583e4bf8cc11c61c2887aa38,
title: 'asdfasdf',
description: 'asdf',
__v: 0,
comments: [],
photos: [Object],
moments: [],
category: [Object],
owner: [Object] }
] }
以下是模板:
<div class="well event_list_page_event_boxes masonry_box">
<div class="img-responsive">
<a href="/event/<%= events._id %>">
<% if (events.photos.link === null){%>
<div class="event_list_page_event_photo"><p>No Image Here</p></div>
<% } else {%>
<img class="event_list_page_event_photo" src="<%= events.photos.link %>" border="0" style="max-width: 100%">
<% } %>
<%}) %>
<div class="row">
<div class="col-sm-9">
<h4 class="event_list_page_event_header"><%= events.title %></h4>
</div>
<div class="col-sm-3">
<p class="event_list_page_event_date"><%= events.date %></p>
</div>
</div>
<p class="event_list_page_event_description"><%= events.description %> </p>
</a>
</div>
</div>
我知道它没有看到events.photos
对象,但是我不确定如何让它可见,所以我可以显示我的数据。
答案 0 :(得分:1)
events
是一个数组,而不是这个:
events.photos.link
您需要使用数组索引,例如:
events[0].photos.link
或者,您需要迭代events
数组。
如果您尝试为events
数组中的每个事件创建新的HTML块,则需要在模板中使用某种循环(例如for
循环或.forEach()
循环)所以你可以循环遍历数组的每个元素。
本文的“创建模板”部分中有一个for
循环的ejs示例:http://www.embeddedjs.com/getting_started.html