如果我在EJS模板中执行此操作,我现在正面临一种奇怪的情况:
<%= JSON.stringify(course.results[0]) %>
向我显示以下内容:
{
"user_id": "900",
"trainingpath_id": "25",
"sco_id": "1",
"nb": "11",
"date": "25/07/2018 14:14",
"date_last_update": "21/08/2018 13:10",
"lesson_status": "passed",
"spent_time": "278",
"score": "100",
"progression": "100",
"unique_sco_id": "427"
}
但是,如果我这样做:
<%= JSON.stringify(course.results[0].score) %>
我收到一条错误消息,告诉我它Cannot read property 'score' of undefined
有人经历过吗?
实际模板页面:
<div class="container">
<div class="row heading-box">
<div class="col">
<h1><span id="introduction">Progress<br></span></h1>
</div>
</div>
<div class="row text-box">
<div class="col">
<% if (Array.isArray(sessions)) { %>
<% sessions.map(session=>{ %>
<div class="session-box">
<h4 class="session-title"><i class="fal fa-chevron-double-right title-indicator"></i> <%= session.name; %> </h4>
<% session.courses.map(course=>{%>
<div class="course-box">
<span class="fa-stack course-thumbnail-stack">
<i class="fas fa-circle course-thumbnail-circle ready fa-stack-2x"></i>
<i class="fal fa-play-circle course-thumbnail-action ready fa-stack-1x fa-inverse"></i>
</span>
<img src="<%= session.details[0].thumbnail_link.indexOf(lms_url) > -1 ? '' : `${lms_url}/` %><%= session.details[0].thumbnail_link %>" class="course-thumbnail">
<h4> <%= course.titre; %></h4>
<p>
Duration : <%= (session.details[0].typical_learning_time_duration || 0) / 60 %> mins<br/>
Score : <% if ('results' in course && Array.isArray(course.results)) { %><%= JSON.stringify(course.results[0], null, '\t') %><% } else { %><%= '0' %><% } %>%
</p>
<button type="button" class="btn btn-lg start-course" onclick="window.location='<%= course.lms_url %>>'">Start</button>
<div style="clear:both"></div>
</div>
<%});%>
</div>
<% }) %>
</div>
<% } %>
</div>
</div>
答案 0 :(得分:2)
正如评论中所讨论的,您的作用域没有任何问题,因此有时您可能遇到数组course.results
的问题,这意味着它可能没有任何元素。因此,为避免这种情况,只需按照@Kosala Nuwan Perera的建议添加length
检查
您也不必stringify
分数,因为它已经是字符串了。
尝试:
Score : <% if ('results' in course && Array.isArray(course.results) && course.results.length > 0) { %><%= course.results[0].score %><% } else { %><%= '0' %><% } %>
答案 1 :(得分:1)
获得property 'score' of undefined
的唯一原因是您的results[0]
未定义。
我建议这样做:
if(course && course.results && course.results.length) {
course.results[0].score
}